Multi-Tenancy Architecture
Overview
Multi-Tenancy Model
Tenant Hierarchy
Organization (Tenant)
├── Tenant Settings
├── Tenant Users (with roles: owner, admin, manager, member, viewer)
├── Groups
│ ├── Group Settings
│ └── Group Users (with roles: admin, manager, member)
└── Tenant Data
├── Integrations
├── Employees (HRIS)
├── Survey Responses
├── Reports
└── ResourcesKey Concepts
User-Tenant Relationship
Multiple User Records Per Person
Tenant Context Resolution
Application-Level Isolation
Request Flow
Tenant and Group Context: URL Path Parameters
Benefit
URL Path
Example Route Structure
Middleware Implementation
Group Context
Personal vs Tenant Routes
Route Type
Tenant Context
User ID Used
Data Access
Cookie for UI Convenience
Database-Level Isolation
Row-Level Security (RLS)
Neon JWT Generation
Database Connection with JWT
Role-Based Access Control
Tenant Roles
Role
Description
Example Permissions
Group Roles
Role
Description
Permission Resolution
Data Model
Tenant Table
Tenant Users Table
Groups Tables
Security Considerations
Tenant Isolation Guarantees
Attack Prevention
Attack
Prevention
Performance Optimizations
1. Permission Caching
2. JWT Reuse
3. Database Indexes
Best Practices
1. Always Use Work User ID for Tenant Data
2. Validate Tenant Access
3. Use Neon JWT for All Tenant Queries
Related Documentation
Last updated