shelf / package.json
scratchmasterj21's picture
Create package.json
a1a0562 verified
{
"name": "shelf-webapp",
"private": true,
"sideEffects": false,
"type": "module",
"scripts": {
"build": "NODE_ENV=production remix vite:build",
"db:diff": "prisma migrate diff --from-url=${DATABASE_URL} --to-migrations=./app/database/migrations --shadow-database-url=${SHADOW_DATABASE_URL} --script > rollback.sql",
"db:prepare-migration": "prisma generate && prisma migrate dev --create-only --skip-seed && tsx app/database/post-migration.ts",
"db:generate-type": "prisma generate",
"db:deploy": "prisma migrate deploy",
"db:deploy-migration": "prisma migrate deploy && prisma generate",
"db:deploy-migration:staging": "dotenv -e .env.staging -- prisma migrate deploy && prisma generate",
"db:deploy-migration:production": "dotenv -e .env.production -- prisma migrate deploy && prisma generate",
"dev": "vite --host",
"production:dev": "dotenv -e .env.production -- vite --host",
"staging:dev": "dotenv -e .env.staging -- vite --host",
"format": "prettier --write .",
"lint": "eslint --cache --cache-location ./node_modules/.cache/eslint .",
"setup": "prisma generate && prisma migrate deploy",
"reset:db": "prisma migrate reset",
"reset:db:staging": "dotenv -e .env.staging -- prisma migrate reset",
"start": "NODE_ENV=production node ./build/server/index.js",
"start:ci": "dotenv -- npm run start",
"test": "vitest",
"test:cov": "vitest --coverage",
"test:e2e:dev": "start-server-and-test dev http://localhost:3000 'npx playwright test --ui'",
"test:e2e:run": "start-server-and-test dev http://localhost:3000 'npx playwright test'",
"test:e2e:install": "npx playwright install --with-deps chromium",
"pretest:e2e:run": "npm run build",
"typecheck": "tsc -b",
"validate": "run-p \"test -- --run\" lint typecheck test:e2e:run",
"lint:fix": "npm run lint -- --fix",
"format-code": "npm run prettier:fix & npm run lint:fix",
"stripe:webhook": "stripe listen --forward-to localhost:3000/api/stripe-webhook",
"prepare": "husky install",
"precommit": "npm run db:generate-type && npm run lint:fix && npm run format && npm run typecheck"
},
"overrides": {
"cross-spawn": "~7.0.6"
},
"dependencies": {
"@fullcalendar/core": "^6.1.11",
"@fullcalendar/daygrid": "^6.1.11",
"@fullcalendar/list": "^6.1.11",
"@fullcalendar/react": "^6.1.11",
"@fullcalendar/timegrid": "^6.1.15",
"@markdoc/markdoc": "^0.4.0",
"@paralleldrive/cuid2": "^2.2.2",
"@prisma/client": "^6.2.1",
"@radix-ui/react-alert-dialog": "^1.0.5",
"@radix-ui/react-collapsible": "^1.1.1",
"@radix-ui/react-dropdown-menu": "2.0.6",
"@radix-ui/react-hover-card": "^1.0.7",
"@radix-ui/react-icons": "^1.3.0",
"@radix-ui/react-popover": "^1.0.7",
"@radix-ui/react-select": "2.0.0",
"@radix-ui/react-separator": "^1.1.0",
"@radix-ui/react-switch": "^1.0.3",
"@radix-ui/react-tabs": "1.0.4",
"@radix-ui/react-toast": "1.1.5",
"@radix-ui/react-tooltip": "^1.0.7",
"@react-email/components": "0.0.14",
"@remix-run/node": "2.13.1",
"@remix-run/react": "2.13.1",
"@remix-run/serve": "2.13.1",
"@sentry/remix": "^8.53.0",
"@stripe/react-stripe-js": "^2.5.0",
"@stripe/stripe-js": "^3.0.2",
"@supabase/supabase-js": "^2.43.4",
"@tremor/react": "^3.14.0",
"@zxing/library": "^0.20.0",
"changedpi": "^1.0.4",
"chardet": "^2.0.0",
"class-variance-authority": "^0.7.0",
"cookie": "^0.7.0",
"crisp-sdk-web": "^1.0.21",
"csv-parse": "^5.5.3",
"date-fns": "^3.3.1",
"date-fns-tz": "^3.2.0",
"detectrtc": "^1.4.1",
"framer-motion": "^11.0.5",
"html-to-image": "1.11.11",
"iconv-lite": "^0.6.3",
"input-otp": "^1.4.2",
"intl-parse-accept-language": "^1.0.0",
"isbot": "^4.4.0",
"jotai": "^2.7.1",
"jsonwebtoken": "^9.0.2",
"jszip": "^3.10.1",
"lodash": "^4.17.21",
"lottie-react": "^2.4.0",
"lru-cache": "^11.0.2",
"lucide-react": "^0.462.0",
"luxon": "^3.4.4",
"mapbox-gl": "^3.1.2",
"maplibre-gl": "^4.0.0",
"nodemailer": "^6.9.9",
"nprogress": "^0.2.0",
"path-to-regexp": "^6.3.0",
"pg-boss": "^9.0.3",
"pino": "^8.19.0",
"pino-pretty": "^10.3.1",
"qrcode-generator": "^1.4.4",
"react": "18.2.0",
"react-day-picker": "^8.10.0",
"react-dom": "18.2.0",
"react-dropzone": "^14.2.3",
"react-map-gl": "^7.1.7",
"react-microsoft-clarity": "^1.2.0",
"react-router-hono-server": "^1.0.0",
"react-tag-autocomplete": "^7.1.0",
"react-to-print": "^2.15.1",
"react-webcam": "^7.2.0",
"react-zorm": "^0.9.0",
"remix-utils": "^7.5.0",
"sharp": "^0.33.2",
"stripe": "^14.16.0",
"swiper": "^11.0.6",
"tailwind-merge": "^2.2.1",
"tailwindcss-animate": "^1.0.7",
"tiny-invariant": "^1.3.1",
"ua-parser-js": "^1.0.37",
"zod": "^3.22.4",
"zxing-wasm": "^2.0.1"
},
"devDependencies": {
"@faker-js/faker": "^8.4.1",
"@playwright/test": "^1.41.2",
"@remix-run/dev": "2.13.1",
"@remix-run/eslint-config": "2.13.1",
"@tailwindcss/aspect-ratio": "^0.4.2",
"@tailwindcss/forms": "^0.5.7",
"@tailwindcss/typography": "^0.5.10",
"@testing-library/jest-dom": "^6.4.2",
"@testing-library/react": "^14.2.1",
"@testing-library/user-event": "^14.5.2",
"@types/js-cookie": "^3.0.6",
"@types/jsonwebtoken": "^9.0.5",
"@types/lodash": "^4.17.9",
"@types/luxon": "^3.4.2",
"@types/nodemailer": "^6.4.14",
"@types/nprogress": "^0.2.3",
"@types/react": "^18.2.55",
"@types/react-dom": "^18.2.19",
"@types/ua-parser-js": "^0.7.39",
"@vitejs/plugin-react": "^4.2.1",
"@vitest/coverage-v8": "^2.1.9",
"autoprefixer": "^10.4.19",
"cross-env": "^7.0.3",
"dotenv-cli": "^7.3.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-no-restricted-imports": "^0.0.0",
"eslint-plugin-tailwindcss": "^3.14.2",
"happy-dom": "^15.11.0",
"husky": "^9.0.11",
"msw": "^1.2.0",
"nodemailer-mock": "^2.0.4",
"npm-run-all": "^4.1.5",
"postcss": "^8.4.38",
"prettier": "3.0.3",
"prettier-plugin-tailwindcss": "^0.5.11",
"prisma": "^6.2.1",
"remix-flat-routes": "^0.6.4",
"start-server-and-test": "^2.0.3",
"tailwind-scrollbar": "^3.1.0",
"tailwindcss": "^3.4.1",
"tsconfig-paths": "^4.2.0",
"tsx": "^4.7.1",
"typescript": "^5.1.0",
"vite": "^5.4.14",
"vite-plugin-cjs-interop": "^2.1.0",
"vite-tsconfig-paths": "^4.3.2",
"vitest": "^2.1.9"
},
"engines": {
"node": ">=20"
},
"prisma": {
"schema": "app/database/schema.prisma"
}
}