-
Notifications
You must be signed in to change notification settings - Fork 106
Open
Description
Foundation — Initial Scaffold
Status: ✅ Complete
Completed
- Move existing files into
src/structure (app/, shared/, features/) - Install Drizzle ORM + Neon serverless driver + Drizzle Kit
- Create
tenantstable schema (status enum, soft delete) - Create
taskstable schema (FK to tenants) - Create
audit_logs+access_logstable schemas - Schema barrel (
shared/db/schema.ts) re-exporting all feature schemas - Drizzle connection (
shared/db/index.ts) -
drizzle.config.tswith.env.localsupport - Push schema to Neon (
npm run db:push) - Permission constants (
shared/lib/permissions.ts) - Subdomain middleware (
src/middleware.ts) - Tenant resolution helpers (
shared/lib/tenant.ts) - API auth helpers (
shared/api/auth.ts) - Account-locked page (frozen/suspended/deactivated)
- Updated
.env.local.example,tsconfig.json,components.json,tailwind.config.ts
Architecture
- Feature-sliced:
app/ → features/* → shared/*(one-way deps) - Schema barrel pattern: features define tables,
shared/db/schema.tsre-exports all - Subdomain routing:
acme.localhost:3000→ rewrite to/tenant/*withx-tenant-slugheader - 4-tier RBAC: admin > manager > member > viewer (via Stack Auth team permissions)
Key Files
src/middleware.ts— subdomain routingsrc/shared/db/schema.ts— barrel schemasrc/shared/lib/permissions.ts— role/permission constantssrc/shared/api/auth.ts— resolveRequestContext, requireSuperAdmindrizzle.config.ts— Drizzle Kit config
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels