Ga naar hoofdinhoud

Architectuur op hoofdlijnen

Een pragmatisch opgezette multi-tenant SaaS-applicatie: één webapplicatie, serverless functies voor het zware werk, en een Postgres-database waarin autorisatie op rijniveau is afgedwongen.

De stack

LaagInvulling
FrontendReact 19, opgebouwd als single-page applicatie, met Tailwind CSS voor de opmaak
ServerfunctiesServerless functies op Vercel — alle AI-aanroepen, exports en beheeracties lopen hierlangs
DatabaseSupabase (PostgreSQL) met row-level security op elke tabel
Vectorzoekenpgvector binnen dezelfde database — geen aparte vectordienst
AuthenticatieSupabase Auth, uitsluitend op uitnodiging
DocumentrenderingServer-side headless browser voor PDF-export
FoutmonitoringSentry, aan zowel client- als serverzijde

Waarom deze opzet

Twee keuzes verdienen toelichting.

Alle AI-aanroepen via serverfuncties, nooit vanuit de browser. Sleutels voor AI-leveranciers en de service-rol van de database bestaan uitsluitend serverside. De browser kan geen AI-aanroep doen die niet eerst langs de eigen gateway gaat, waar autorisatie, budgetbewaking en promptresolutie plaatsvinden.

Geen aparte vectordatabase. De embeddings staan in dezelfde Postgres als de canvasdata. Daardoor geldt dezelfde row-level security voor het zoeken naar bewijs als voor de gewone data — tenant-isolatie hoeft niet in twee systemen apart kloppend gehouden te worden.

Omgevingen

Er zijn twee volwaardige omgevingen:

  • Staging — schemakopie van productie met wegwerpbare inhoud. Elke databasewijziging wordt hier eerst bewezen.
  • Productie — krijgt schemawijzigingen uitsluitend via een migratiebestand dat al op staging is toegepast en geverifieerd.

Die volgorde is geen afspraak maar een geautomatiseerde poort in de uitleverstraat; zie Kwaliteit en delivery.

Schaal van de codebase

OnderdeelHoe het is geborgd
Databasemigratieselk een versiebeheerd bestand, op volgorde toegepast, eerst op staging bewezen
Component- en unittestsbij elke wijziging, verplicht vóór samenvoegen
Testsuites voor tenant-isolatieeen eigen reeks, per wijziging en elke nacht tegen een echte database
Architectuurbesluitenvastgelegd vóór de bouw, met alternatieven en de voorwaarden voor heroverweging

:::note Ambitie versus werkelijkheid De interne architectuurvisie beschrijft ook onderdelen die nog niet gebouwd zijn — onder meer een facturatielaag en een marktplaats voor methodiekpakketten. Deze pagina beschrijft uitsluitend wat daadwerkelijk draait. Wat nog komt, staat op de roadmap. :::