{ "private": true, "scripts": { "predev": "node scripts/compress-gtm.js && node scripts/apply-dev-fixes.js", "dev": "next dev", "dev:turbo": "next dev --turbo", "prebuild": "node scripts/compress-gtm.js", "build": "node scripts/optimize-build.js || next build", "vercel-build": "npm run build", "original-build": "next build", "postbuild": "next-sitemap", "start": "next start", "lint": "next lint", "prettier-fix": "prettier --write .", "optimize-images": "node scripts/optimize-images.js", "build:optimized": "npm run optimize-images && next build", "build:full": "node scripts/optimize-build.js", "stripe:login": "stripe login", "stripe:listen": "stripe listen --forward-to=localhost:3000/api/webhooks", "stripe:fixtures": "stripe fixtures fixtures/stripe-fixtures.json", "supabase:start": "npx supabase start", "supabase:stop": "npx supabase stop", "supabase:status": "npx supabase status", "supabase:restart": "npm run supabase:stop && npm run supabase:start", "supabase:reset": "npx supabase db reset", "supabase:link": "npx supabase link", "supabase:generate-types": "npx supabase gen types typescript --local --schema public > types_db.ts", "supabase:generate-migration": "npx supabase db diff | npx supabase migration new", "supabase:generate-seed": "npx supabase db dump --data-only -f supabase/seed.sql", "supabase:push": "npx supabase db push", "supabase:pull": "npx supabase db pull", "supabase:sync": "npm run supabase:pull && npm run supabase:reset && npm run supabase:generate-types", "postinstall": "node -e \"process.env.SKIP_POSTINSTALL ? console.log('Skipping postinstall') : require('./scripts/apply-dev-fixes.js')\"", "fix-ws": "node scripts/fix-nextjs-ws.js", "test": "jest", "test:watch": "jest --watch", "test:coverage": "jest --coverage" }, "dependencies": { "@radix-ui/react-toast": "^1.1.5", "@stripe/stripe-js": "2.4.0", "@supabase/auth-helpers-nextjs": "^0.10.0", "@supabase/ssr": "^0.1.0", "@supabase/supabase-js": "^2.47.12", "@types/lodash": "^4.17.16", "autoprefixer": "^10.4.21", "class-variance-authority": "^0.7.0", "classnames": "^2.5.1", "clsx": "^2.1.1", "critters": "^0.0.20", "dom-to-image-more": "^3.5.0", "form-data": "^4.0.1", "framer-motion": "^12.4.10", "lodash": "^4.17.21", "lucide-react": "0.330.0", "next": "14.2.3", "next-sitemap": "^4.2.3", "node-fetch": "^3.3.2", "postcss": "^8.5.3", "react": "^18.3.1", "react-calendar": "^5.1.0", "react-confetti": "^6.2.2", "react-dnd": "^16.0.1", "react-dnd-html5-backend": "^16.0.1", "react-dom": "^18.3.1", "react-hot-toast": "^2.5.2", "react-icons": "^5.3.0", "react-merge-refs": "^2.1.1", "react-qr-code": "^2.0.15", "react-qrcode-logo": "^3.0.0", "react-resizable": "^3.0.5", "stripe": "^14.25.0", "tailwind-merge": "^2.3.0", "tailwindcss": "^3.4.4", "tailwindcss-animate": "^1.0.7" }, "devDependencies": { "@types/node": "^20.14.2", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@types/react-resizable": "^3.0.8", "daisyui": "^4.12.10", "eslint": "^8.57.0", "eslint-config-next": "14.1.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-react": "^7.34.2", "eslint-plugin-tailwindcss": "^3.17.3", "glob": "^10.3.10", "prettier": "^3.3.1", "prettier-plugin-tailwindcss": "^0.5.14", "responsive-loader": "^3.1.2", "sharp": "^0.33.3", "supabase": "^2.15.8", "typescript": "^5.4.5", "@testing-library/jest-dom": "^6.4.2", "@testing-library/react": "^14.2.1", "@testing-library/user-event": "^14.5.2", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "msw": "^2.2.1", "ts-jest": "^29.1.2", "@types/jest": "^29.5.12" }, "resolutions": { "sharp": "^0.33.3" }, "overrides": { "next": { "sharp": "^0.33.3" } } }