Thema
Foundation — de onderlaag
Geen fase in de keten, maar de voorraad waaruit de keten put.
Naast de keten staat de fundering: domein-loze, herbruikbare bouwblokken die de keten voeden maar er zelf geen stap in zijn. Fase 2 stelt er een boilerplate uit samen, fase 3 bouwt erop verder.
┌──────────────── DE ROUNDTRIP ────────────────┐
Ideation → Techniek & scaffold → Ontwikkelen → Deploy
▲ ▲
│ boilerplate │ styling-laag
┌─────────────────┴──────────────────┴─────────┐
│ FOUNDATION (ondersteunend — geen fase) │
│ 22 kits (mechaniek) ─┐ │
│ 9 capability-modules (+ surface)─┼─► compositie │
│ white-label design system ─┘ │
└──────────────┬────────────────────────────────┘
│ alles bereikbaar als npm-artefact
▼
┌─────────────────┐
│ npm-registry │ lokaal (Verdaccio) tijdens ontwikkeling
│ │ npmjs bij release
└─────────────────┘Drie tiers
| Tier | Wat het is | Distributie |
|---|---|---|
| Kits | Mechaniek, domein-loos. Ports & adapters, config-injectie, semver, pure core + dunne NestJS/Vue-adapter. | @seifer-webapp-factory/kit-<tier>-<naam> — 22 packages |
| Capability-modules | Mechaniek + surface voor één samenhangend vermogen. Publiceren hun oppervlak als materialiseerbare templates, niet als import. | @seifer-webapp-factory/capability-module-<slug> — 9 packages |
| Design system | De visuele taal. Merkneutraal, met één bestand als rebrand-ingang. De frontend-kits consumeren het in plaats van het te herimplementeren. | Gekopieerd per product, niet gedeeld — eigen scope per kopie |
Daarnaast: capability-spec, scaffolder-core en tools/project-scaffolder. De kits en modules samen zijn 35 losse npm-packages.
Waar wat woont
Kits en modules zitten in foundation/. Het design system staat als design-system/ ernaast, met wireframe-ds/ als aparte wireframe-laag — beide zijn functioneel fundering, maar hebben een eigen build en lockfile die een workspace-fan-out niet overleven.
Slug ≠ packagenaam
De slug (authentication) is de module-identiteit: manifest.name, de directorynaam, requires.modules, en waar tabelprefixen en i18n-namespaces aan hangen. De packagenaam (…/capability-module-authentication) is puur distributie. Conventie: foundation/capability-modules/README.md.
Boilerplate als receptuur
Uit deze bouwblokken wordt per project een boilerplate samengesteld — compositie, geen één-vaste-template. Fase 2 kiest welke kits en frontend-blokken meegaan, welke capability-modules gematerialiseerd worden, en welk merk over het design system komt.
Hoe meer er kant-en-klaar in die compositie zit, hoe minder er per project afgeleid hoeft te worden — wat direct de frictie in naad A en naad B verlicht.
Elke bouwblok draagt zijn eigen skill
Dit is wat de fundering bruikbaar maakt in plaats van alleen aanwezig:
| Tier | Skill | Aantal |
|---|---|---|
| Kits | integrate-<kit>-kit — installeren, poorten injecteren, configureren, valkuilen bewaken, verifiëren | 22 |
| Modules | apply-<module>-module — materialiseren in het project | per module |
| Modules | create-capability-module — een nieuwe bouwen volgens de conventie | 1 |
| Design system | rebrand · theme-manager · apply-preset · add-component · test-component · build-prototype-by-design-system | 8 |
De harde regel eronder
De foundation gebruikt geen npm-workspaces. Elk van de 35 packages installeert zijn interne afhankelijkheden als tarball uit een npm-registry, precies zoals een project in fase 2 dat doet.
Dat is geen esthetiek — het is de reden dat een hele klasse fouten hier boven water komt in plaats van pas na het deployen. → Registry-only
Gevolg voor je werkdag
De ontwikkellus is publicatiegebonden: wijzig → bump → publiceer → installeer. Er is geen sneller pad, en dat is met opzet. → De ontwikkellus
Verder lezen in de repo
| Bestand | Inhoud |
|---|---|
foundation/REGISTRY-ONLY.md | Het model, de commando's, de restpunten |
foundation/integration-test-plan.md | De testladder erbovenop |
foundation/capability-modules/README.md | Module-conventies |
foundation/kit-packages/KIT-SKILL-CONVENTION.md | Hoe een kit-skill eruitziet |
design-system/BRAND.md · BRAND_FONTS.md | De rebrand-gids |
design-system/white-label-plan.md | Waarom het white-label is |