Architectuurbeslissingen en openstaande punten

Beslissingen (ADR-log)

# Datum Beslissing Waarom Omkeerbaar?
1 2026-10-28 Eén multi-tenant Next.js-app voor sites, dashboard, beheer en PWA Eén codebase, nieuwe klant = configuratie Ja, sites kunnen later apart gedeployed worden
2 2026-10-28 Gedeelde database met tenant_id + RLS (geen database per klant) Kosten en beheer; enterprise kan later eigen project krijgen Ja
3 2026-10-28 Geen Payload CMS; content als blok-JSON in Postgres Geen dubbel beheer/auth; editor is het product Ja, Payload kan later als bron worden toegevoegd
4 2026-10-28 n8n niet als kern; eigen TypeScript-connectors Tenant-scheiding, logging, licentie Ja
5 2026-10-28 Demo-opslag in JSON-bestand achter repo.ts Demo zonder accounts; overstap raakt schermen niet Ja (Supabase-schema staat klaar)
6 2026-10-28 cacheComponents uit in Next 16 Alle pagina's lezen live tenant-data; statisch cachen van publieke sites is een latere optimalisatie Ja
7 2026-10-28 shadcn/ui in de "base-nova"-stijl (Base UI i.p.v. Radix) Standaard van de huidige shadcn-CLI Ja
8 2026-10-28 AI-acties altijd via proposeAction() met beleid Eén plek voor rechten, goedkeuring en logboek, ongeacht engine – (kernprincipe)
9 2026-10-28 Demo-AI als fallback zonder sleutel, altijd gelabeld Demo werkt zonder kosten; nooit doen alsof het een taalmodel is Ja
10 2026-10-28 Standaardmodel claude-opus-5-5, instelbaar Beste kwaliteit om mee te starten; per taak goedkoper model mogelijk na meting Ja
11 2026-10-28 PWA vóór native app Geen tweede codebase; push werkt op Android en geïnstalleerd op iOS Ja
12 2026-10-28 White-label: geen DV Software-vermelding op klantsites Wens van de eigenaar: klanten zien niet waar de site vandaan komt Ja
13 2026-10-28 Klantdomeinen via src/proxy.ts (Next 16 opvolger van middleware) Eigen domein toont site op /, zonder DV Software in de URL Ja
14 2026-10-28 Opslag omschakelbaar via DATA_BACKEND (json/postgres) achter één Store-interface Demo blijft zonder accounts werken; productie op Postgres zonder schermen te wijzigen Ja
15 2026-10-28 Postgres-tabellen als id + tenant_id + data (jsonb) met gegenereerde kolommen voor sleutels Eén generieke, testbare opslaglaag; types kunnen nog snel veranderen. Nadeel: minder databaseconstraints per veld – velden kunnen later zonder datamigratie gepromoveerd worden Ja
16 2026-10-28 Direct naar Postgres (node-postgres) i.p.v. supabase-js, met set local role authenticated + JWT-claims per transactie RLS geldt ook voor server-code; transacties (alles-of-niets) mogelijk; lokaal te testen zonder Supabase Ja
17 2026-10-28 Gebruikers-id = Supabase Auth-id; geen zelfregistratie, alleen uitnodigingen Klanten krijgen toegang via DV Software of hun eigenaar; geen open aanmelding Ja
18 2026-10-28 Verbruikstellers en pakketvelden alleen door server/platform te wijzigen (databasetrigger) Klant kan eigen pakket, functies of AI-teller niet aanpassen, ook niet bij een appfout Ja
19 2026-10-31 Merknaam DV Software (eerder Vlotwerk, Klantstroom, Plingr, DV Solutions); naam centraal in src/lib/brand.ts Keuze eigenaar: internationaal, IT-klank, eigen initialen; dvsoftware.nl vrij Ja (één bestand + logo)
21 2026-10-31 Generator maakt klant + site + assistent uit één beschrijving; beheerder keurt eerst goed Nieuwe klant in minuten; mens blijft verantwoordelijk Ja
22 2026-10-31 Gegenereerde en nieuwe klantsites krijgen géén verzonnen reviews, cijfers of prijzen Misleiding voorkomen (nepreviews zijn ook wettelijk verboden) – (kernprincipe)
23 2026-10-31 Afbeeldingen via de app geserveerd (/api/media), opgeslagen in privé Supabase-bucket White-label (geen Supabase-URL op klantsites), tenantcontrole blijft gelijk Ja
20 2026-10-28 Platformhuisstijl inkt-navy + koraal, Plus Jakarta Sans, vlak ontwerp Professioneel en herkenbaar, geen "AI-uitstraling" Ja

Openstaande punten

  • dvsoftware.nl registreren (vrij bij SIDN); optioneel dvsoftware.com kopen (te koop bij BuyDomains). Naam "DV Software" toetsen bij KvK en BOIP – jouw actie
  • Na registratie: Resend koppelen (mail.dvsoftware.nl) voor Supabase-mails en platformmails
  • Opslaglaag op PostgreSQL met RLS (fase 2, lokaal getest)
  • Echte login met Supabase Auth: code klaar, deels getest (zie STATUS)
  • Supabase-project aanmaken (EU-regio, gratis plan volstaat om te starten) – jouw actie, zie docs/08
  • Verbinding met het echte Supabase-project getest (versleuteld + certificaat gecontroleerd)
  • Productieproject in Frankfurt (eu-central-1) aanmaken; het testproject staat in Londen (VK, wel AVG-adequaat)
  • Uploads naar Supabase Storage
  • Online: GitHub (privé) → Vercel, https://app.dvsoftware.nl en https://www.dvsoftware.nl (31-10-2026)
  • Generator testen met echte Claude-sleutel
  • 2FA (TOTP) voor eigenaren en platformbeheer
  • Platformoverzicht met gerichte queries i.p.v. alles laden
  • Retentie activiteitenlog in Postgres (nu onbeperkt)
  • Vercel-project + wildcard-domein + automatische domeinkoppeling via Vercel API
  • Resend-domein verifiëren (SPF/DKIM/DMARC)
  • Rate limiting op publieke formulieren
  • OAuth-flows (Google, Microsoft, Moneybird) – fase 4
  • Web Push (VAPID) voor echte pushmeldingen
  • Mollie/Stripe voor abonnementen
  • Juridisch: algemene voorwaarden, verwerkersovereenkomst, privacyverklaring-template voor klanten
  • Evaluatieset voor de AI met echte (geanonimiseerde) aanvragen
  • Project buiten OneDrive zetten en naar een privé GitHub-repository pushen