HERO IMAGE: - Generated 3 concepts with gemini-3-pro-image-preview, picked #1 - Phone showing 'Payment Received' notification at a charity gala dinner - Warm tungsten bokeh chandeliers against dark bg-gray-950 - Directly visualizes the headline: 'money in the bank' - Candid documentary angle, not looking at camera, brand compliant IMAGE OPTIMIZATION (85% total reduction): - All 21 images resized: landscape max 1200px, portrait max 1000px - Compressed JPEG quality 80, progressive encoding, EXIF stripped - Total: 13.6MB -> 2.1MB (saved 11.5MB) - Individual savings: 81-90% per image NEXT.JS IMAGE PIPELINE: - Added sharp (10x faster than squoosh for image processing) - next.config.mjs: WebP format, proper device/image sizes, 1yr cache TTL - Dockerfile: libc6-compat + NEXT_SHARP_PATH for Alpine sharp support - First request: ~3s (processing), cached: <1s WebP served sizes: hero 52KB, cards 32-40KB (vs original 500-800KB JPEGs)
51 lines
1.2 KiB
JSON
51 lines
1.2 KiB
JSON
{
|
|
"name": "pledge-now-pay-later",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"scripts": {
|
|
"dev": "next dev",
|
|
"build": "next build",
|
|
"start": "next start",
|
|
"lint": "next lint"
|
|
},
|
|
"dependencies": {
|
|
"@auth/prisma-adapter": "^2.11.1",
|
|
"@prisma/adapter-pg": "^7.4.2",
|
|
"@prisma/client": "^7.4.2",
|
|
"@stripe/stripe-js": "^8.8.0",
|
|
"@types/bcryptjs": "^2.4.6",
|
|
"@types/qrcode": "^1.5.6",
|
|
"bcryptjs": "^3.0.3",
|
|
"class-variance-authority": "^0.7.1",
|
|
"clsx": "^2.1.1",
|
|
"date-fns": "^4.1.0",
|
|
"lucide-react": "^0.575.0",
|
|
"nanoid": "^5.1.6",
|
|
"next": "14.2.35",
|
|
"next-auth": "^4.24.13",
|
|
"papaparse": "^5.5.3",
|
|
"pg": "^8.19.0",
|
|
"prisma": "^7.4.2",
|
|
"qrcode": "^1.5.4",
|
|
"react": "^18",
|
|
"react-dom": "^18",
|
|
"sharp": "^0.34.5",
|
|
"stripe": "^20.4.0",
|
|
"tailwind-merge": "^3.5.0",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"devDependencies": {
|
|
"@types/node": "^20",
|
|
"@types/papaparse": "^5.5.2",
|
|
"@types/pg": "^8.18.0",
|
|
"@types/react": "^18",
|
|
"@types/react-dom": "^18",
|
|
"eslint": "^8",
|
|
"eslint-config-next": "14.2.35",
|
|
"postcss": "^8",
|
|
"tailwindcss": "^3.4.1",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5"
|
|
}
|
|
}
|