{
"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"
}
}
}