Database Schema
The T3 webapp uses Postgres with Drizzle ORM. The schema is defined in packages/shared/src/schema.ts.
Key Tables
| Table | Key Columns |
|---|---|
workspace | id, slug, name, created_at |
fund | id, workspace_id, name — UNIQUE(workspace_id, name) since migration 0003 |
investor | id, workspace_id, name, type, classification |
inbox_item | id, workspace_id, fund_id (FK since migration 0004), filename, status, classified_type |
review | id, fund_id, slug, safety_score, grade, verdict, reviewed_at |
run | id, workspace_id, agent, status, input, output, created_at |
issue | id, fund_id, severity, title, description, status |
Migrations
Migrations live in packages/shared/drizzle/. Key migrations:
| Migration | Change |
|---|---|
0001 | Initial schema |
0002 | NextAuth tables |
0003 | fund(workspace_id, name) UNIQUE constraint |
0004 | inbox_item.fund_id FK to fund |
Running Migrations
bash
pnpm db:migrateSeeding
bash
pnpm seedSeeds 3 funds, 20 investors, 13 issues, and 7 inbox items.
Drizzle Studio
bash
pnpm db:studioOpens Drizzle Studio for visual database exploration.