De technische
infrastructuur van
BodyworkOS
Een volledig transparant overzicht van de architectuur, beveiliging, data-modellen, integraties en roadmap, gebouwd voor vertrouwen op enterprise niveau.
94+ dealers onder één platform, BMW · JLR · Mercedes groepen, enterprise-grade security, naadloze Incadea DMS-integratie. Eén verhaal voor elke vestiging.
BodyworkOS en RentalOS
Eén gedeelde API, één gedeelde database, één deploy-pipeline, één security-perimeter. Twee complete productervaringen: carrosserie-operaties en vloot-/verhuurbeheer. Dealers schakelen tussen beide met één login, Carya ziet één platform, wij beheren één codebase.
De operationele kern van de carrosserie-onderneming. Vervangt PlanManager met moderne UX, mobile-first werkplekken, AI-schadeanalyse en naadloze Incadea-synchronisatie.
- Dossierbeheer, 25 statussen, 13 tabs, real-time collaboration
- Werkplaats & planning, AE-gebaseerd (1 AE = 6 min)
- Claims360 / Informex / Audatex native embedded
- AI schade- & boete-scan (Gemini + OCR.space)
- BWO Academy, gamified opleiding per rol
- PEPPOL e-invoicing naar elke EU-partner
Fleet & vervangwagenbeheer. Vervangt losse spreadsheets en Wialon-achtige tools met een volwassen planning, automatische boete-workflow, contractgeneratie en Belgische nummerplaat-herkenning.
- Timeline-planning met drag & drop + collision detection
- Boete-inbox, AI-extractie, automatische matching op reservering
- Contract + digitale handtekening + PEPPOL factuur
- Vloot-intake met foto's, beschadigingen-kaart, sleutelbeheer
- TCO-calculator + HR car-order flow per werknemer
- Dealer self-service portal via Keycloak SSO
pnpm monorepo · shared/ui/core packages · één set types voor alles
Cookie + MFA vandaag → Keycloak + Entra-SSO in roadmap
Docker Compose · Dokploy · zero-downtime rollout vanaf main
ISO · CyFun · NIST · CRA · GDPR, dezelfde regels voor beide apps
Systeem overzicht
Drie onafhankelijke apps op een gedeelde API, multi-tenant PostgreSQL database en Redis session store. Alle communicatie verloopt via de Next.js proxy, geen directe blootstelling van de API aan het publiek.
Security posture
BodyworkOS is gebouwd met ISO 27001, CyFun (Belgisch cybersecurity framework), NIST CSF en de EU Cyber Resilience Act als leidraad, niet als nagedachte.
Authenticatie
httpOnly cookies (bwos_session + bwos_refresh), TOTP MFA via speakeasy, bcrypt password hashing, refresh token rotatie, session invalidation bij logout.
Multi-tenancy
Elke query is hard-gefilterd op tenantId uit het JWT. Geen cross-tenant data lekkage mogelijk via API. tenantId op alle 52 Prisma modellen.
Autorisatie (RBAC)
Granulaire permissies per module: notifications.read, notifications.write, etc. requirePermissions() middleware op elke gevoelige route. 5 BWO-rollen + 2 platform-rollen.
Audit Trail
Volledige AuditLog op alle mutaties. SecurityIncident model voor anomalie-registratie. GDPR Art.17 (wissing) en Art.20 (portabiliteit) ingebakken in API.
Transport Security
TLS 1.3 overal via Let's Encrypt + Traefik. HSTS. CORS origin-whitelist. X-Accel-Buffering: no voor SSE. Content-Security-Policy headers.
Input validatie
Zod schema-validatie op alle API input. Geen raw SQL, uitsluitend Prisma ORM. Rate limiting op auth-endpoints. SQL injection structureel onmogelijk.
| Framework | Domein | Status | Implementatie |
|---|---|---|---|
| ISO 27001 | A.9: Toegangsbeheer | ✓ Compliant | RBAC, MFA, session management, least privilege |
| ISO 27001 | A.12: Operationele beveiliging | ✓ Compliant | Audit logs, monitoring, backup via Dokploy |
| ISO 27001 | A.13: Communicatiebeveiliging | ✓ Compliant | TLS 1.3, HSTS, CORS, httpOnly cookies |
| ISO 27001 | A.18: Compliance | ✓ Compliant | GDPR Art.17/20, PEPPOL e-invoicing, CarPass |
| CyFun (CCN) | ID.AM: Asset management | ✓ Compliant | Volledig geïnventariseerde API modules (135) |
| CyFun (CCN) | PR.AC: Identity & Access | ✓ Compliant | JWT, TOTP MFA, refresh rotatie |
| CyFun (CCN) | PR.DS: Data Security | ✓ Compliant | bcrypt, TLS, httpOnly cookies, geen plain tokens |
| NIST CSF | DE.CM: Monitoring | ⚡ In progress | Audit trail ✓ · SIEM integratie gepland Q2 |
| NIST CSF | RS.RP: Incident Response | ⚡ In progress | SecurityIncident model ✓ · playbook Q2 |
| CRA (EU 2024/2847) | Art. 13: Security by design | ✓ Compliant | Zod validatie, Prisma ORM, RBAC, geen standaard-wachtwoorden |
| GDPR | Art. 17: Recht op wissing | ✓ Compliant | GdprRequest model + API endpoint in productie |
| GDPR | Art. 20: Dataportabiliteit | ✓ Compliant | JSON export per gebruiker beschikbaar |
Volledige technologiestack
Moderne, bewezen technologieën, geen experimentele dependencies. Elke keuze is gemotiveerd door stabiliteit, performance en enterprise-ondersteuning.
Frontend
Backend
52 Prisma modellen
Elk model heeft tenantId als harde isolatiesleutel. Geen shared tables zonder tenant-scope. GDPR-compliant met ingebouwde wissing en portabiliteitsroutes.
Belgisch carrosserie ecosysteem
BodyworkOS integreert naadloos in het volledige Belgische ecosystem, van DMS tot verzekeraar tot e-invoicing. Elke integratie heeft een adapter-pattern voor toekomstige uitbreidingen.
Auto-detect adapter: JSON API → OData → ODBC fallback. 40+ methodes: voertuigen, klanten, werkorders, facturen, verhuur, SOC-orders.
Verzekeraar schadebeheer. Native embed in BWO dossier: bestek sync, Smart Expertise foto-analyse, Audatex prijzen, VNC handler.
Belgisch wettelijk verplicht voertuighistoriek. Automatische opvraging bij elke nummerplaatscan. Connector klaar, live-test lopende.
EU-standaard e-invoicing. Eerste succesvolle zending 14 april 2026 (INV/2026/00002). Via Odoo 19.1 als PEPPOL access point.
Expert taxatieplatform. Connector ingebouwd in BWO dossier: expertiserapport ophalen, taxatiewaarde sync, foto-upload vanuit BWO.
Verzekering dossier import via XML. Parser volledig geïmplementeerd: alle Informex velden gemapt naar BWO Dossier model.
Automatische extractie van boetes en aanrijdingsscans. Nummerplaat + schadeomschrijving + bedragen uit foto's. 95%+ nauwkeurigheid.
Interne webhook-ontvanger + event bridge. Elke dossierwijziging, notificatie of integratie-event kan als webhook gepubliceerd worden naar externe systemen.
Identity roadmap
Van stevige cookie-based auth vandaag naar een enterprise identity provider met Entra federation, zonder migratiepijn voor bestaande gebruikers.
Cookie-based Auth + TOTP MFA
httpOnly session cookies, refresh rotatie, bcrypt hashing, TOTP via speakeasy (Google Authenticator compatibel). Alle accounts kunnen MFA inschakelen.
Keycloak 26: Identity Provider
Keycloak 26 op login.digitalfarmers.be. Eén centrale identity provider voor alle DF producten: BWO, RentalOS, Dealer Portal, TinyEclipse. OIDC/OAuth2 compliant.
Microsoft Entra ID Federation
Keycloak als broker naar Carya's Azure AD. Medewerkers loggen in met hun bestaand Microsoft account, geen extra wachtwoorden. SAML2 of OIDC federatie via Entra tenant-config.
Dealer SSO + Provisioning
Automatische user provisioning via SCIM voor Carya dealer netwerk. Elke dealer kan zijn eigen IdP (AD, Google Workspace) federeren.
🔑 Huidige auth-flow
→ bcrypt verify → JWT generatie
→ bwos_session (httpOnly, 8h)
→ bwos_refresh (httpOnly, 30d)
// MFA (optioneel, per gebruiker)
POST /auth/mfa/verify { totp_code }
→ speakeasy.totp.verify()
→ session upgraded → redirect
// Token refresh (transparant)
POST /auth/refresh
→ rotate refresh token
→ nieuwe session cookie
🏢 Keycloak architectuur (roadmap)
└─ Keycloak 26 realm: carya
├─ Identity Provider: Microsoft Entra
│ └─ OIDC federation → Carya tenant
├─ Clients:
│ ├─ bodyworkos-web
│ ├─ rentalos-web
│ └─ dealer-portal
└─ SCIM provisioning → auto user sync
Zero-downtime deployment pipeline
Volledig geautomatiseerde pipeline van git commit tot productie. Gemiddelde deploy-tijd onder 3 minuten. Rollback in één klik via Dokploy UI.
Infrastructuur
Hetzner VPS 51.89.23.93. Dokploy als deployment platform. Docker Compose met 5 services: postgres, redis, api, web, rentalos-web.
Scaling
Horizontale scaling via Dokploy Swarm mode beschikbaar. Database connection pooling via Prisma. Redis voor session sharing over meerdere API-instanties.
Backup & Recovery
PostgreSQL dagelijkse dumps via Dokploy backup module. Uploads op persistent volume. RTO < 1u, RPO < 24u. Point-in-time recovery beschikbaar via Hetzner snapshots.
Beschikbaarheid
Traefik health-checks per container. Automatisch herstart bij crash. Let's Encrypt certificaten met auto-renewal. Uptime monitoring via externe probe.
Van nu naar Q4 2026
Ambitieus maar realistisch. Elke sprint levert werkende software, geen powerpoints.