Skip to content

Multi-Tenant (Prisma)

Database-per-tenant multi-tenancy with Prisma ORM. Each tenant gets a separate PrismaClient with its own datasourceUrl.

Features

  • TenantAdapter with subdomain resolution
  • TenantConnectionManager<PrismaClient> — typed connection cache
  • TenantDbService — injectable wrapper using getCurrentTenant()
  • AuthAdapter with JWT authentication
  • Provider/tenant pattern with fallback to default database
  • Each getDb() call returns a fully typed PrismaClient

Key Files

FilePurpose
src/db/schema.tsShared types, provider tenant registry
src/db/tenant-manager.tsTenantConnectionManager<TDb> + Prisma factory
src/db/tenant-db.service.ts@Service() wrapping tenant DB resolution
src/index.tsBootstrap with TenantAdapter + AuthAdapter
src/modules/projects/Controller demonstrating tenant-scoped queries

Running

bash
cd examples/multi-tenant-prisma-api
pnpm install
kick dev

Source

See Also