Platform master — schaal, evolutie en wijzigingen
Dit bestand is de ene centrale referentie voor capaciteitsdoelen, ontwerpkeuzes rond schaalbaarheid en een append-only wijzigingslog. Iedere substantiële wijziging aan architectuur, data-pad, security of capaciteit moet hier eerst gelezen en daarna bijgewerkt worden (zie workflow onderaan).
Detaildocumenten blijven bestaan (
docs/platform/*,docs/telematics/*, ADR’s). Dit master-document vat de noordelijke richting samen en houdt besluiten + log bij één plek.
1. Noordelijke capaciteit (ontwerpdoelen)
| Domein | Doel | Opmerking |
|---|---|---|
| Gebruikers | ≥ 40 miljoen accounts / identiteiten die het platform aankan (registraties, rollen, auth) | Vereist o.a. horizontale schaal van app-laag, caching, DB-strategie (replica’s, sharding/partitionering waar nodig), geen single-node aannames. |
| Trackers | ≥ 600.000 gelijktijdige veldapparaten (ingest + status) | Referentieklasse: Teltonika FMC920 (Codec 8 / AVL — zelfde familie als FMB920). Gateway horizontaal, sticky TCP, event backbone, tijdreeksen in geschikte store. |
| Groei | Toekomstige producten (extra device types, integraties, rapporten) | Nieuwe features documenteren hier en in ADR indien architectuur wijzigt; capaciteit expliciet meenemen. |
Concrete technische uitwerking: o.a. docs/telematics/scaling.md, docs/platform/data-plane.md, ADR’s onder docs/platform/adr/ en docs/telematics/adr/.
2. Referentie-hardware (voorbeeld)
- Teltonika FMC920 — representatief voor een grote fleet: periodieke AVL-records, TCP-sessies, command queue. Ontwerp gateway + workers + opslag alsof honderdduizenden van dergelijke sessies gelijktijdig kunnen bestaan.
3. Ontwerpprincipes (kort)
- Stateless applicatie waar mogelijk; sessies/cache extern (bijv. Redis).
- Horizontale schaal voor gateway, API en workers; geen “één grote machine”-mentaliteit.
- Data: partitionering / tijdreeksen-archief; leespaden voor rapportage gescheiden van hot write-path waar passend.
- Backpressure & limieten — buffers, rate limits, duidelijke foutpaden (zie telematics scaling).
- Observability — metrics, logging, runbooks; SLO’s expliciet houdbaar maken.
- Documentatie — significante beslissingen in ADR; dit master-document bijwerken + logregel toevoegen.
4. Verplichte workflow (mens + agent)
Vóór substantiële code- of infra-wijzigingen:
- Lees dit bestand (relevante secties + laatste logregels).
- Lees
docs/platform/README.mdvoor index; open betrokken ADR’s en telematics/platform docs. - Raadpleeg de lokale agent-audittrail:
.cursor/logs/agent-audit.jsonl(laatste regels) om overlap of recente edits te zien.
Na wijzigingen die architectuur, security, data-model of capaciteit raken:
- Werk de relevante secties in dit document bij (doelen, status, links).
- Voeg een regel toe aan §5 Wijzigingslog (append-only).
- Voeg of werk een ADR bij indien het een blijvende architectuurkeuze is.
5. Wijzigingslog (append-only)
| Datum (UTC) | Gebied | Samenvatting | Details / PR / commit |
|---|---|---|---|
| 2026-05-15 | Docs + Cursor rules | Master-document aangemaakt; schaaldoelen 40M gebruikers / 600k FMC920-klasse devices; workflow gekoppeld aan rules; platform/telematics index en scaling.md op doelen afgestemd. | docs/PLATFORM-MASTER.md, .cursor/rules/platform-scale-evolution.mdc, .cursor/rules/agent-audit-workflow.mdc, docs/platform/README.md, docs/telematics/scaling.md, docs/telematics/README.md |
| 2026-05-15 | GitHub / DX | Repo-naam package.json aligned; GitHub workflows (docs CI, PR labeler, dependency review), Dependabot, issue/PR templates, CODEOWNERS, SECURITY, CONTRIBUTING, scripts voor labels + starter issues, docs/github/SETUP.md. | .github/*, scripts/github/*, CONTRIBUTING.md, SECURITY.md, docs/github/SETUP.md, package.json |
| 2026-05-15 | Docs-site + deploy | Docusaurus (documentation/) bouwt repo-root docs/; nginx-template + render uit .env; secrets PRODUCTION_DOCS_HOST / PRODUCTION_DOCS_URL; Docker build naar /var/www/omnihub-docs; certbot --expand voor extra hostnamen; workflow: patch → docs → ensure → compose. | documentation/, deploy/nginx/omnihub.conf.template, deploy/render-nginx-from-env.sh, deploy/build-documentation-static.sh, deploy/patch-env-github-secrets.sh, deploy/ensure-server-deps.sh, .github/workflows/deploy.yml, .github/DEPLOY-SECRETS.md, .cursor/rules/docusaurus-public-and-domains.mdc |
| 2026-05-15 | GitHub / DX | Script create-roadmap-project.mjs: na gh auth refresh -s project,read:project project aanmaken of hergebruiken, repo koppelen, open issues op board; SETUP §2 uitgebreid. | scripts/github/create-roadmap-project.mjs, scripts/github/create-roadmap-project.ps1, scripts/github/create-roadmap-project.sh, docs/github/SETUP.md |
| 2026-05-15 | GitHub / DX | Project #4 OmniTrack roadmap: aangemaakt, Jjustmee23/omnihub-schoolV2 gekoppeld, 5 open issues op het board gezet. | gh project + scripts/github/create-roadmap-project.mjs |
| 2026-05-15 | Cursor rules | Nieuwe rule github-issues-resolve-and-done.mdc: agents bij “los issue(s)” gh gebruiken, Fixes/Closes, sluiten na merge voor Done op project; kruisverwijzing in platform-scale-evolution.mdc. | .cursor/rules/github-issues-resolve-and-done.mdc, .cursor/rules/platform-scale-evolution.mdc |
| 2026-05-15 | GitHub / DX | Dependabot groups + open-pull-requests-limit: 1 per ecosystem (minder branches/PR’s); PR labeler alleen naar main; lichte CI voor pure dependabot/github_actions/* PR’s in deploy.yml; SETUP-doc met cleanup-hint. | .github/dependabot.yml, .github/workflows/deploy.yml, .github/workflows/pr-labeler.yml, docs/github/SETUP.md |
| 2026-05-15 | GitHub / DX | Roadmap-batch: manifest ~33 issues; populate-omnitrack-roadmap.mjs + labels roadmap / omnitrack-roadmap-batch; SETUP §4b. | scripts/github/roadmap/manifest.json, scripts/github/populate-omnitrack-roadmap.mjs, scripts/github/labels.json, docs/github/SETUP.md |
| 2026-05-15 | GitHub / DX | Project #4: repo gh project link; velden Target date + Delivery phase (gh project field-create); SETUP §2c — 12 gefilterde views + optionele Roadmap-timeline, Status vs Delivery phase, workflows, default view. | gh project link, gh project field-create, docs/github/SETUP.md |
| 2026-05-15 | Product / feedback | In-app supporttickets (categorie/subcategorie), feature-ideeën met stemmen + suggesties + merge; optionele GitHub-export (overheid); dashboardtabs + chauffeur-help; tabellen support_tickets, feature_requests, feature_votes; env GITHUB_FEEDBACK_*; rule feedback-product-github.mdc. | server.ts, src/App.tsx, src/feedback/FeedbackPages.tsx, src/locales/*.json, deploy/env.production.template, .cursor/rules/feedback-product-github.mdc |
| 2026-05-15 | Product / feedback | Semantische dubbele ideeën (Jaccard-tokens + titelgewicht), live preview-duplicates; chauffeur-header Ideas naast Help; GitHub-token uit GITHUB_FEEDBACK_TOKEN_FILE (mtime-cache); feedback rate limits (preview/write/vote/sync). | server.ts, src/App.tsx, src/feedback/FeedbackPages.tsx, src/locales/*.json, deploy/env.production.template, .cursor/rules/feedback-product-github.mdc |
| 2026-05-15 | Security / RBAC | Canonieke Engelse rollen + tabellen user_permissions / user_scopes; routes en Socket op permissies/scopes; legacy NL-rollen migratie; UI + seed op /api/me permissies; feedback-viewer uitzondering voor POST zonder domein-write. | ADR 0005-rbac-roles-scopes-permissions.md, lib/authz.ts, server.ts, seedIraqDemo.ts, src/authzClient.ts, src/App.tsx, src/feedback/FeedbackPages.tsx, src/locales/*.json, .cursor/rules/overheid-operator-ux.mdc, .cursor/rules/feedback-product-github.mdc |
| 2026-05-15 | Deploy / docs | Canonieke productie-domeinen in repo: omnitransitiq.com (app), docs.omnitransitiq.com, track.omnitransitiq.com — templates + DEPLOY-SECRETS.md + Docusaurus/build-defaults aligned met GitHub secrets. | .github/DEPLOY-SECRETS.md, deploy/env.production.template, deploy/build-documentation-static.sh, documentation/docusaurus.config.ts, .cursor/rules/docusaurus-public-and-domains.mdc, docs/PLATFORM-MASTER.md §7 |
| 2026-05-15 | Product / auth | Heropenen eerste setup: optioneel BOOTSTRAP_REOPEN_TOKEN (min. 24 tekens) + POST /api/bootstrap/reopen + login-UI; transactie zet bootstrap_completed=false en heractiveert admin@admin.be; optioneel GitHub secret PRODUCTION_BOOTSTRAP_REOPEN_TOKEN → patch-env. | server.ts, src/App.tsx, src/locales/*.json, deploy/patch-env-github-secrets.sh, deploy/env.production.template, .github/workflows/deploy.yml, .github/DEPLOY-SECRETS.md, README.md, docs/PLATFORM-MASTER.md |
(Nieuwe rijen altijd onderaan toevoegen; oude rijen niet wijzigen.)
6. Status & open punten
- Huidige codebase: kan in fasen draaien (MVP → platform stack); zie
docs/platform/phase-1-mvp.mdendocs/platform/phase-2-v1.md. - Gap-analyse naar 40M/600k: periodiek invullen in
docs/platform/capacity-baseline.csvendocs/platform/load-test-plan.md.
7. Publieke documentatie (Docusaurus) en domeinen
- De map
docs/(Markdown, ADR’s, runbooks) is de bron;documentation/bevat Docusaurus en publiceert die inhoud als statische site (geen secrets in die content). - Productie: configureer
PRODUCTION_APP_URL,PRODUCTION_TRACKER_HOST, optioneelPRODUCTION_DOCS_HOST(= bv.docs.omnitransitiq.com) enPRODUCTION_DOCS_URLin GitHub Actions secrets; DNS naar de juiste server(s). Details:../.github/DEPLOY-SECRETS.md. - Meerdere servers (schaal): wijs per rol hostnamen toe (app vs. ingest vs. docs-edge); werk dit document + platform-docs bij wanneer je traffic splitst.
Laatste inhoudelijke update van dit document: zie laatste regel in §5.