Move uploaded images to disk storage, fix Next 16 async params/searchParams
Homepage was rendering 71MB of HTML because every uploaded image (gallery, products, proofs, custom requests, design previews, invoices, receipts) was stored as base64 in Postgres and double-embedded via RSC hydration payloads. Adds src/lib/storage.ts (sharp-based compression, disk storage under public/uploads/) and a new /api/design-uploads endpoint for images added inside the design tool, migrates existing rows, and drops the now-unused base64 columns and the dead ProductImage table. Also fixes a systemic bug from the Next.js 16 upgrade where dynamic pages across the app still destructured params/searchParams synchronously instead of awaiting them as Promises, which was silently breaking filters/params and crashing /products/[slug] outright. Updates README.md and SETUP_AND_BUILD.md to reflect Postgres + Next.js 16 and document the new image storage architecture and backup requirements. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
e23f201d3d
commit
396347b982
+4
-3
@@ -1,6 +1,7 @@
|
||||
# Database (SQLite by default — works out of the box on any server).
|
||||
# For Postgres later, change provider in prisma/schema.prisma and set this to your Postgres URL.
|
||||
DATABASE_URL="file:./dev.db"
|
||||
# Database — PostgreSQL connection string. prisma/schema.prisma is fixed to the
|
||||
# postgresql provider, so this must point at a real Postgres instance (local
|
||||
# install, Docker container, or managed service) — a SQLite file path won't work.
|
||||
DATABASE_URL="postgresql://user:password@localhost:5432/craft2prints?schema=public"
|
||||
|
||||
# Stripe — get these from https://dashboard.stripe.com/apikeys
|
||||
STRIPE_SECRET_KEY="sk_live_or_test_..."
|
||||
|
||||
Reference in New Issue
Block a user