Skip to content

Fase 2 · Technische benodigdheden & scaffold

Map: scaffolder/ + foundation/ · Vraag: waarmee bouwen we dit, en hoe zet ik het skelet neer?

Deze fase bestaat uit twee helften die vaak op één hoop gegooid worden, maar echt verschillend zijn:

  1. In kaart brengen — welke technologie is nodig, hoe volwassen is die, welke architectuur past, welke kits en modules gaan mee?
  2. Scaffolden — dat vertalen naar een scaffolder.config.yaml en er een runnende skeleton uit genereren.

Helft 1 · De technische benodigdheden in kaart

technische-haalbaarheid

De skill die de brug slaat tussen "dit willen we" en "dit is er technisch voor nodig". Hij doet zelf webresearch naar tech-maturity — hij vraagt de gebruiker niet om data die opzoekbaar is, alleen om beslissingen en bevestigingen.

Per kandidaat-oplossing (een HMW-statement) levert hij:

UitkomstVorm
Benodigde technologieënConcrete stack-onderdelen
Maturityproven · emerging · experimental
Complexiteit1–5
BlockersTechnisch én regulatory
Verdict🟢 / 🟡 / 🔴 met een ruwe oplossingsrichting

Bronvoorkeur: NL voor regulatory en datatoegang (Rijksoverheid, RVO, NEN, Autoriteit Persoonsgegevens, RIVM, branche-organisaties), internationaal voor pure tech-maturity (Hugging Face, GitHub, vendor-docs, arXiv, Gartner). Bij gebrek aan webtoegang wordt maturity expliciet gelabeld als [Aanname — geen web-validatie].

De lens-tags uit fase 1 sturen de zoekrichting: L2 duwt naar een voice- en wearable-stack.

Tijdsbudget: ~2–4 minuten per HMW; boven de 10 wordt er gebatcht.

De architectuur- en ontwerpbeslissingen

Waar de haalbaarheidstoets breed kijkt, leggen deze skills de keuzes vast. Elk levert een expliciete afweging met "wanneer wel / wanneer niet".

DomeinSkills
Architectuurvormarchitecture-pattern-selection · architecture-tradeoff-analysis · system-decomposition · ddd-strategic-modeling
Datadatabase-technology-selection · conceptual-data-modeling · logical-data-modeling · physical-data-modeling · data-dictionary-definition
API & integratieapi-design · api-contract-specification · api-versioning-strategy · integration-pattern-selection · event-schema-design · webhook-design
Identiteitauthentication-strategy-design · authorization-modeling
Veiligheidthreat-modeling · attack-surface-analysis · security-requirements-classification · encryption-strategy · secrets-management-design
Operationeelslo-sli-definition · observability-strategy · logging-tracing-design · performance-budgeting · scalability-modeling · rate-limiting-throttling-strategy
Vastleggentechnical-specifications · adr-writing · interface-specification

Niet alles hoeft

Dit is een menukaart, geen checklist. technische-haalbaarheid en architecture-pattern-selection zijn het kritieke pad; de rest zet je in waar de onzekerheid zit.

Welke bouwblokken gaan mee

De uitkomst bepaalt de compositie uit de foundation: welke van de 22 kits, welke van de 9 capability-modules, en het design system als styling-laag.

Dat is receptuur, geen vaste template. Hoe meer er kant-en-klaar in de compositie zit, hoe minder de scaffolder hoeft af te leiden — en hoe minder frictie in beide naden.

Foundation

Helft 2 · Scaffolden

De CLI

bash
scaffolder generate scaffolder.config.yaml   # zet app/ neer
scaffolder add-module <naam>                 # één entiteit erbij
scaffolder propose                           # voorstel tonen
scaffolder sync                              # plumbing bijwerken

De gegenereerde stack: NestJS + Nuxt + Postgres, met Docker eromheen.

Verantwoordelijkheid

BezitDe code-spine (config → persistence → mailer → auth → http-kernel), de plumbing (.scaffolder/manifest.json), de versie-pinning, en sync.
Doet NIETBusinesslogica of entiteitsvelden verzinnen. En het hoort geen productie-/ops-artefacten te bezitten — zie naad B; vandaag is dat een botsing.
Levert opapp/ + .scaffolder.json + manifest.

De seams

De scaffolder zet een skelet neer dat compileert en draait, maar leeg is. Twee plekken zijn expliciet bedoeld om te vullen — dat gebeurt in fase 3:

SeamWat erin komt
modules.tsDe domeinmodules — welke entiteiten bestaan er
domain-migrations.tsDe echte velden en relaties

Wat add-module neerzet is een stub: CRUD over id / createdAt / updatedAt.

De bouwblokken inwiren

Hier komen de foundation-skills in beeld. Elk kit-package draagt zijn eigen integratie-skill:

SkillAantalDoet
integrate-<kit>-kit22Installeren, poorten injecteren, configureren, de valkuilen bewaken, verifiëren
apply-<module>-moduleper moduleDe capability-module materialiseren in het project
create-capability-module1Een nieuwe module bouwen volgens de conventie

Drie aanroeppunten: vanuit de scaffolder, vanuit een solution ("integreer de storage kit"), en vanuit de kit zelf ("voeg deze kit toe aan die solution"). Dat werkt zonder registry omdat kits en solutions op dezelfde schijf staan.

Skills · Kits

De umbrella bestaat niet meer

@seifer-webapp-factory/kits — en daarmee de webappFactoryVersion die de scaffolder nog pint — is per 2026-08-17 opgeheven. De pin in scaffolder/src/convention/convention.ts moet daarop mee.

Gate 2

Voorwaarden om door te mogen: de code compileert, /health is groen, en de liveness is gehaald.

Draaien

bash
cd scaffolder
npm install && npm run build
npm run dev            # tsx src/cli.ts
npm run docs:dev       # eigen VitePress-docs onder docs/

Of via het control panel op localhost:4700.

Volgende

Fase 3 · Ontwikkelen & personaliseren

Seifer — interne documentatie. Bron van waarheid blijft de repo zelf.