Multi-tenant architectuur, per rij geschaald, per query geaudit.
Eén database, veel tenants, nul cross-tenant lekken. We bouwen SaaS-backends waar elke read en write zijn tenant-scope door het typesysteem, het queryplan en de audit log draagt. Het soort architectuur dat een security-questionnaire passeert zonder voetnoten.
Wat we bouwen
Row-level scoping in Postgres
Tenant ID gestempeld op elke rij, afgedwongen op databaseniveau via RLS-policies. Applicatiecode vraagt om data; de database weigert rijen terug te geven die niet bij de aanvragende tenant horen. Geen client-side filter om te vergeten.
Type-safe tenant context
Een getypte `TenantContext` loopt door elke querypath. Drizzle + TanStack Start maken ongetypte queries een compile error, niet een runtime bug. De architectonische regel wordt door de toolchain afgedwongen.
Per-tenant subdomeinen en custom domeinen
Tenant-resolutie aan de edge: subdomein-routing voor de default, custom domeinen met geautomatiseerde cert-provisioning voor enterprise-tiers. Middleware injecteert de tenant voordat de request een handler raakt.
Audit trails per tenant
Elke state-veranderende call schrijft een append-only audit-rij met tenant, actor, action, en before/after state. De audit-tabel is zelf tenant-scoped; tenants zien alleen hun eigen historie.
Background jobs die tenancy respecteren
BullMQ-workers ontvangen tenant-context als onderdeel van de job-payload. Een long-running export voor tenant A kan tenant B's data niet lezen omdat de worker dezelfde scoped querypath gebruikt als de request handler.
Migratiepatronen die per tenant schalen
Schemaveranderingen zijn standaard tenant-agnostisch. Als een feature per-tenant data oplevert, genereert de migration tooling per-tenant backfills met rollback plans ingebakken.
Waar dit past
Je SaaS begon single-tenant en je moet enterprise-klanten onboarden die data-isolatie schriftelijk willen vastleggen.
Je verliest deals op de security-questionnaire omdat je tenant-model geen pen-test of SOC 2-review doorstaat.
Je hebt een multi-tenant database maar geen architectonische handhaving: een vergeten WHERE-clause kan data lekken en je zou het niet weten.
Tech stack
- TypeScript
- Postgres
- Drizzle
- TanStack Start
Wil je dit voor je team?
30 minuten met een oprichter of ervaren ontwikkelaar. We bepalen wat je nodig hebt en zeggen je eerlijk of Stacklane past.
Plan een gesprekVerwante capabilities

