Read-only mirror of the client's existing system as it stood before our work began. Taken from matthijsexpand@149.210.159.152 (TransIP VPS, Lelystad NL) with the client's written permission. Contents: - home-weddingcaketopper/ Next.js app, proxy.py, supabase schema - var-www/ static webroots for all three domains - etc-nginx/ vhost configs (previously unversioned, server-only) Excluded: node_modules (704M, regenerable), .next (17M, regenerable), and env file contents (present on local disk, gitignored — see README). Not our IP. Not covered by the proposal's assignment clause. |
||
|---|---|---|
| .. | ||
| app | ||
| disabled-pages/admin_disabled | ||
| lib | ||
| proxy | ||
| public | ||
| public-site | ||
| supabase | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| eslint.config.mjs | ||
| next.config.ts | ||
| package-lock.json | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
WeddingCakeTopper.nl MVP
Next.js MVP met:
- Bestelpagina
- Upload 3–6 foto's
- Supabase database + storage
- Adyen Sessions route
- OpenAI AI-preview route
- Simpele adminpagina
Installatie lokaal
npm install
cp .env.example .env.local
npm run dev
Supabase
- Maak een project aan.
- Draai
supabase/schema.sqlin SQL editor. - Maak bucket
order-uploadsaan. - Voor MVP: public bucket. Voor productie: private bucket + signed URLs.
Adyen
Vul in .env.local:
- ADYEN_API_KEY
- ADYEN_MERCHANT_ACCOUNT
- ADYEN_CLIENT_KEY
- ADYEN_ENVIRONMENT=test
Webhook URL:
https://weddingcaketopper.nl/api/payments/webhook
OpenAI
Vul OPENAI_API_KEY in.
Deploy TransIP VPS
sudo apt update
sudo apt install -y nodejs npm nginx certbot python3-certbot-nginx
npm install
npm run build
npm install -g pm2
pm2 start npm --name weddingcaketopper -- start
pm2 save
Nginx reverse proxy naar http://127.0.0.1:3000.
Belangrijk
Deze MVP is een startpunt. Voor live productie nog toevoegen:
- Echte admin login
- Adyen webhook HMAC-validatie
- Private Supabase uploads
- Email notificaties
- Rate limiting
- AVG/privacytekst