Workspace-isolatie
Elke workspace krijgt een eigen dedicated database schema. Geen gedeelde "data"-tabel achter een workspace_id-filter. Een query in workspace A kan letterlijk geen rijen van workspace B zien omdat dat schema niet op het search path staat.
Schema per workspace · afgedwongen op databaseconnectie
Versleuteld at rest
Integratie-access tokens, signup payloads en andere gevoelige velden worden versleuteld met AES-128-CBC + HMAC-SHA256. De sleutels staan buiten de database. Zelfs een gestolen DB-dump is nutteloos.
AES-128 + HMAC-SHA256 · key rotation ondersteund
Server-side permissies
Permissies worden op de server gecontroleerd, niet in de UI. Elk beschermd endpoint filtert op wie vraagt, wat ze doen en wiens data ze raken. Bij elke request. De webclient volgt de regels voor UX, maar een verboden API-call bereikt de rij nooit.
Server-afgedwongen per query · permissies per request
EU-hosting
Productiedata staat bij Scaleway in Parijs (fr-par). Backups, replicas en worker queues verlaten de EU niet. De applicatieklok is Europe/Brussels en de munt is €. Beide bewust gekozen, beide relevant voor procurement.
Belgisch bedrijf · EU data residency · geen US sub-processors voor opslag
Auditgeschiedenis
Elke wijziging aan taken, comments, uren, bijlagen en tags wordt vastgelegd in een onveranderbare history-tabel. Opvraagbaar voor compliance, exporteerbaar op Business. Tag toevoegingen/verwijderingen en viewer-wijzigingen krijgen eigen audit events.
retentie: 90 d (Starter) · 1 j (Pro) · 3 j (Business)
Accountveiligheid
Wachtwoorden gehasht met Argon2. Resets via een 6-cijferige eenmalige code met 15 minuten geldigheid en max. 5 pogingen. Brute-force lockout en rate limiting op signup per IP en e-maildomein.
Argon2 · brute-force lockout · 15 min code · max 5 pogingen
Laatste-admin safeguard
De API weigert de laatste admin van een workspace te deactiveren, te degraderen of te verwijderen. Met een duidelijke foutmelding. Het org-locking ongeluk op vrijdag om 16u kan letterlijk niet gebeuren.
Server-side afgedwongen · gedekt door geautomatiseerde tests
Gedocumenteerde API
Elk endpoint wordt beschreven door een auto-generated OpenAPI 3 schema op /api/schema/ met Swagger UI en ReDoc. Onze TypeScript clients regenereren uit hetzelfde schema, dus docs en code blijven synchroon.
Publiek OpenAPI schema · Swagger UI & ReDoc · auto-generated clients