- next/font/google lud Open Sans/Poppins zur Build-Zeit von Google -> flakiger
'Failed to fetch from Google Fonts' bricht den Prod-Build ab. Jetzt committete
woff2 (src/app/fonts) via next/font/local -> reproduzierbarer Offline-Build, DSGVO.
- scripts/bootstrap-admin.ts: provisionTenant nimmt kein isPlatformAdmin mehr; der
Superadmin ist jetzt das eigene Modell platformAdmin (Login /platform/login, MFA).
Bootstrap legt Mandant+Mandanten-Admin UND platformAdmin an (idempotent).
- node:22-Docker-Build lokal verifiziert (kompiliert + TypeCheck + Routen).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- scripts/bootstrap-admin.ts: legt ersten Plattform-Admin + Mandant via
provisionTenant(isPlatformAdmin) an; idempotent, per Env gesteuert. Ersetzt in
Prod den Demo-Seed. tsx-@/-Auflösung lokal verifiziert.
- docker-compose.coolify.yml: migrate-Job führt bei BOOTSTRAP_ADMIN=true das Skript
nach der Migration aus; BOOTSTRAP_*-Vars durchgereicht.
- .env.prod.example: Prod-Env-Referenz (HTTPS, kein Demo-Seed, Bootstrap-Vars).
- docs/DEPLOY-PROD-CONTABO.md: Runbook (VPS-Härtung/Swap, Coolify+Gitea, DNS/TLS
app.certvia.de, Deploy, Bootstrap, Backups, Go-Live-Checkliste).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>