Deze pagina beschrijft het beheerproces. Met database (productie) gelden servercookies en optioneel tweestaps authenticator.
ADMIN_PASSWORD op de server. Optioneel 6-cijfercode = ADMIN_TOTP_SECRET (genereer met node scripts/generate-admin-totp.mjs). Zonder database: demo-wachtwoord memoriah-beheer (of NEXT_PUBLIC_MEMORIAH_ADMIN_PASSWORD)./m/uw-slug (te vinden op het dashboard en bij bewerken).Zie sectie 0 hierboven. Sessie blijft geldig tot u uitlogt (cookie op productie, sessionStorage in demo-modus).
Kies Nieuw memorium. Vul naam, unieke URL-slug, levensverhaal en optioneel afscheidsinformatie in. Sla op — de publieke pagina staat op /m/uw-slug. Deel deze link via rouwkaart, e-mail of social media.
Als “nieuwe berichten eerst modereren” aan staat, komen bijdragen in de wachtrij. Onder Moderatie per memorium kunt u goedkeuren, afwijzen of verwijderen. Uitgelichte berichten stelt u in bij bewerken.
Op het beheer-dashboard kunt u alle lokale data als JSON exporteren. Bezoekers kunnen goedgekeurde herinneringen afdrukken of als PDF opslaan via “Versie voor afdrukken”.
package.json staat (Project Settings → Root Directory).vercel.json ingesteld op migraties + build.DATABASE_URL, DIRECT_URL, ADMIN_PASSWORD, MEMORIAH_JWT_SECRET (≥16 tekens). Opslaan en daarna opnieuw deployen.DATABASE_URL Connection pooling met method Transaction — URI kopiëren; voeg indien nodig ?pgbouncer=true&connection_limit=1&sslmode=require toe. Voor DIRECT_URL (Prisma-migraties, o.a. tijdens de Vercel-build): onder Connection pooling kies Session en kopieer de URI — host *.pooler.supabase.com, poort 5432. Zo voorkom je P1001 op Vercel: de directe host db.*.supabase.co is vaak alleen via IPv6 bereikbaar en vanaf de build-omgeving niet te bereiken. Alternatief: Supabase IPv4 add-on en dan Direct connection. Controleer ook dat het project niet gepauzeerd is. Database-wachtwoord: in het Connect-venster of onder Database → Settings.DIRECT_URL exact gelijk aan DATABASE_URL. Demo-seed na deploy: lokaal npm run db:seed met je productie- DATABASE_URL als je voorbeelddata wilt.P3005 (schema is not empty)Let op: alleen je database-URL’s op Vercel zetten lost P3005 niet op — de build blijft falen tot Prisma één keer weet dat de init-migratie al „gedaan” is. Dat doe je met npm run db:baseline hieronder (tegen de echte productiedatabase), daarna opnieuw deployen.
De database heeft al tabellen (bijvoorbeeld na scripts/supabase-memoriah-schema.sql), maar Prisma heeft nog geen rij in _prisma_migrations. Dan weigert migrate deploy. Los eenmalig op op een machine met je productie-DATABASE_URL en DIRECT_URL (zelfde als Vercel), in de projectmap. In .env of .env.local volstaat met DATABASE_URL — ontbreekt DIRECT_URL, dan zet het script die gelijk aan DATABASE_URL (geen P1012). Zonder enige DATABASE_URL lokaal krijg je een duidelijke foutmelding. Op Vercel blijven beide vars gewoon gezet.
Optie A — lokaal (aanbevolen als je CLI al werkend hebt)
npm run db:baselineOptie B — Supabase SQL Editor (geen terminal; één keer per database)
Open in de repo het bestand scripts/supabase-prisma-baseline-once.sql, kopieer de volledige inhoud, plak in Supabase → SQL Editor → Run. Daarmee wordt de migratie 20260512000000_init als al toegepast geregistreerd. Daarna opnieuw deployen op Vercel.
Optie A voert (via een wrapper) prisma migrate resolve --applied 20260512000000_init uit — hetzelfde effect als optie B. Doe dit alleen als je bestaande tabellen overeenkomen met prisma/migrations/…/migration.sql. Is de DB leeg? Gebruik dan geen baseline — alleen opnieuw deployen. Past het schema niet? Eerst DB afstemmen of hulp van een ontwikkelaar.
Vervang YOUR_PROJECT_REF, regio, wachtwoord en secrets door jouw echte waarden. De host aws-0-…pooler.supabase.com en poorten 6543 / 5432 moeten kloppen met wat Supabase in Connect toont. Belangrijk: bij elke pooler-URL moet de gebruiker postgres.YOUR_PROJECT_REF zijn (zoals in Connect) — niet alleen postgres. Die korte naam hoort bij de Direct host db.*.supabase.co; op de pooler geeft dat FATAL: Tenant or user not found.
Name: DATABASE_URL
Value:
postgresql://postgres.YOUR_PROJECT_REF:YOUR_DB_PASSWORD@aws-0-eu-central-1.pooler.supabase.com:6543/postgres?pgbouncer=true&connection_limit=1&sslmode=require
Name: DIRECT_URL
Value:
postgresql://postgres.YOUR_PROJECT_REF:YOUR_DB_PASSWORD@aws-0-eu-central-1.pooler.supabase.com:5432/postgres?sslmode=require
Name: ADMIN_PASSWORD
Value: (een sterk wachtwoord voor /beheer/inloggen)
Name: MEMORIAH_JWT_SECRET
Value: (minimaal 16 willekeurige tekens)In het Vercel-scherm vul je per regel alleen de Value-inhoud in; geen Name: prefix in het value-veld. Plak DIRECT_URL het liefst rechtstreeks uit Supabase Connect → Session, zodat gebruikersnaam en host gegarandeerd bij elkaar horen.
Vervang localStorage door een API met database (bijv. PostgreSQL), gehashte wachtwoorden, rolgebaseerde toegang voor families, e-mail voor moderatie-alerts, virusscan op uploads, CDN voor afbeeldingen en rate-limiting op formulieren. Houd een duidelijke bewaartermijn en verwijderprocedure aan voor de AVG.