BodyworkOS · Blueprint

Dit document bevat vertrouwelijke technische informatie van Digital Farmers BV.

Ongeldige toegangscode.

Vertrouwelijk technisch dossier · Digital Farmers BV × CARYA

De technische
infrastructuur van
BodyworkOS

Een volledig transparant overzicht van de architectuur, beveiliging, data-modellen, integraties en roadmap, gebouwd voor vertrouwen op enterprise niveau.

0 Prisma modellen
0 API modules
0 Dealers netwerk
0 % multi-tenant
3 Live apps
GEBOUWD VOOR CARYA
94+ dealers onder één platform, BMW · JLR · Mercedes groepen, enterprise-grade security, naadloze Incadea DMS-integratie. Eén verhaal voor elke vestiging.
BMW JLR Mercedes Incadea

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.

BodyworkOS
Carrosserie · Werkplaats · Dossiers

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
↔ Shared ↔
API 135 modules
PostgreSQL · Redis
RentalOS
Vloot · Verhuur · Vervangwagen

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
Gedeeld
1 codebase

pnpm monorepo · shared/ui/core packages · één set types voor alles

Gedeeld
1 auth

Cookie + MFA vandaag → Keycloak + Entra-SSO in roadmap

Gedeeld
1 deploy

Docker Compose · Dokploy · zero-downtime rollout vanaf main

Gedeeld
1 security perimeter

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.

🌐 Browser Chrome / Firefox
📱 Mobile iOS / Android PWA
🔗 Webhook Externe systemen
DNS · Let's Encrypt TLS
🔀 Traefik Reverse Proxy TLS termination · routing · CORS
Docker Compose · Dokploy · VPS 51.89.23.93
🏗️ BWO Web Next.js 14 · :3000
🚗 RentalOS Web Next.js 14 · :3002
🏢 Dealer Portal Next.js 14 · :3003
Next.js API proxy rewrite · /api/v1/* → api:3001
Gedeelde Express API Node.js · TypeScript · 135 modules · port 3001
Prisma ORM · Connection Pool
🐘 PostgreSQL 16 52 modellen · multi-tenant
Redis Sessions · caching · pub/sub
📁 Local Storage Uploads · scans · docs
Externe integraties
🔧 Incadea DMS OData / JSON
🛡️ Claims360 Verzekeraar
🇧🇪 CarPass Voertuig hist.
📄 PEPPOL e-Invoicing
🔍 uBench Expertisatie
📋 Informex XML import

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

⚛️
Next.js 14
App Router · RSC · Standalone build
×3 apps
🔷
TypeScript
Strict mode · volledig getypeerd
Strict
🎨
Tailwind CSS
Dark mode · Shadcn/ui component library
🔄
TanStack Query
Server state · cache · optimistic updates
🐻
Zustand
Client state · auth store
📡
Server-Sent Events
Real-time notificaties · SSE push · heartbeat 15s
Live
📱
PWA + Service Worker
Offline queuing · IDB outbox · Background Sync
Live

Backend

🟢
Node.js + Express
TypeScript · 135 modules · shared API
🔺
Prisma ORM
52 modellen · migraties · type-safe queries
🐘
PostgreSQL 16
Multi-tenant · JSONB · indexed full-text
🔴
Redis
Session store · caching · pub/sub
🤖
Gemini AI + OCR.space
Boete-scan · aanrijdingsanalyse · extractie
🐳
Docker + Dokploy
Compose · auto-deploy via webhook · Traefik
Live
🔐
Keycloak 26
Identity provider · Entra federation · roadmap
Roadmap

52 Prisma modellen

Elk model heeft tenantId als harde isolatiesleutel. Geen shared tables zonder tenant-scope. GDPR-compliant met ingebouwde wissing en portabiliteitsroutes.

Tenant
User
UserSession
UserLocation
Dossier
DossierNote
DossierTimeline
DossierDocument
Vehicle
Customer
PlanningResource
PlanningSlot
DmsConnection
DmsMapping
PmSetup
StatusMapping
SyncQueue
SyncAttempt
SyncEvent
ImportInbox
ImportResolution
ExternalReference
WorkOrderLink
InvoiceLink
RentalVehicle
RentalReservation
RentalFine
RentalHandover
RentalPayment
PickupPhoto
HrCarOrder
DamageClaim
DamageReport
CommunicationLog
CommTemplate
Notification
AttachmentImport
PortalSession
PortalApproval
PortalMessage
PortalFeedback
AuditLog
SecurityIncident
GdprRequest
Location
Dealer
ApiKey
Webhook
PartsOrder
Feedback
StorageUsage
Kern & Auth
Dossiers
Planning
Incadea / DMS integratie
Rental
Schade
Platform

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.

🔧 Incadea DMS Live

Auto-detect adapter: JSON API → OData → ODBC fallback. 40+ methodes: voertuigen, klanten, werkorders, facturen, verhuur, SOC-orders.

ODataJSON APIODBCAuto-detect
🛡️ Claims360 In progress

Verzekeraar schadebeheer. Native embed in BWO dossier: bestek sync, Smart Expertise foto-analyse, Audatex prijzen, VNC handler.

REST APIWebhooksAudatex
🇧🇪 CarPass In progress

Belgisch wettelijk verplicht voertuighistoriek. Automatische opvraging bij elke nummerplaatscan. Connector klaar, live-test lopende.

Belgische wetgevingVIN lookup
📄 PEPPOL Actief

EU-standaard e-invoicing. Eerste succesvolle zending 14 april 2026 (INV/2026/00002). Via Odoo 19.1 als PEPPOL access point.

EU-standaardOdoo relay
🔍 uBench In progress

Expert taxatieplatform. Connector ingebouwd in BWO dossier: expertiserapport ophalen, taxatiewaarde sync, foto-upload vanuit BWO.

ExpertisatieREST API
📋 Informex Live

Verzekering dossier import via XML. Parser volledig geïmplementeerd: alle Informex velden gemapt naar BWO Dossier model.

XML parsingAuto-import
🤖 Gemini AI Live

Automatische extractie van boetes en aanrijdingsscans. Nummerplaat + schadeomschrijving + bedragen uit foto's. 95%+ nauwkeurigheid.

Vision AIOCR.space
🪝 Webhook Engine Live

Interne webhook-ontvanger + event bridge. Elke dossierwijziging, notificatie of integratie-event kan als webhook gepubliceerd worden naar externe systemen.

Event-drivenHMAC signing

Identity roadmap

Van stevige cookie-based auth vandaag naar een enterprise identity provider met Entra federation, zonder migratiepijn voor bestaande gebruikers.

✓ Vandaag live April 2026

Cookie-based Auth + TOTP MFA

httpOnly session cookies, refresh rotatie, bcrypt hashing, TOTP via speakeasy (Google Authenticator compatibel). Alle accounts kunnen MFA inschakelen.

🔄 Gepland Q2 2026

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.

⏳ Wacht op Carya Q2 2026

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.

📋 Backlog Q3 2026

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

POST /auth/login
→ 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)

login.digitalfarmers.be
└─ 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.

👨‍💻 Git commit main branch
🔗 Webhook X-GitHub-Event
🚀 Dokploy Compose orchestration
🐳 Docker build Standalone Next.js
🔀 Traefik swap Zero-downtime
Live productie app.bodyworkos.com
🖥️

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.

Fase 1 Gedaan
Fundament
Q1 2026
Multi-tenant architectuur
Dossier management (volledig)
Planning & werkplaats
Incadea DMS adapter
MFA + RBAC + GDPR
RentalOS embedded
BWO Academy gamification
Team messaging (SSE)
PWA offline sync
Fase 2 Nu actief
Integraties
Q2 2026
Keycloak 26 + Entra federation
Claims360 native embed
CarPass live koppeling
uBench taxatie flow
PEPPOL e-invoicing live
Dealer branding per tenant
DamageVisualization (SVG)
PartsManager port
Fase 3 Q3 2026
Intelligence
AI-gedreven dossier scoring
Herhalingsschade detectie
Predictieve planning (AE)
Contract digitale handtekening
Facturatie engine v2
Dealer SCIM provisioning
Rapportage engine (BI)
Mobiele native app (PWA+)
Fase 4 Q4 2026
Schaal
Multi-locatie support
94+ dealer rollout Carya
Universal DMS migrator UI
Eurotax / AutoScout integratie
SIEM integratie (ISO27001)
Marketplace voor add-ons
API voor derde partijen
SOC 2 Type II traject
LIVE