Problem
CRM-like internal tools need more than forms and tables: they need tenant separation, permissions, operational workflows, dashboard views, and reporting paths that stay coherent as the product grows.
Constraints
- Private project; do not claim public users, production scale, or open-source status.
- Must model tenant separation and permissions clearly enough to defend in a technical interview.
- Must keep workflows maintainable as CRM entities and reporting needs expand.
What I built
Build a tenant-aware CRM architecture with typed API boundaries, database models that reflect operational roles, and dashboards/reporting workflows that map to how teams actually use the system.
Architecture
Next.js/React frontend, tRPC typed API layer, PostgreSQL data model via Drizzle, authentication and RBAC-aware access patterns, tenant-scoped workflows, and dashboard/reporting modules.
Public UI
Typed API boundary
Database-backed content
Decisions and trade-offs
- Modeled tenant ownership and permissions as application and database boundaries.
- Kept frontend workflows aligned with typed tRPC contracts and PostgreSQL/Drizzle models.
Outcome
Built a private end-to-end CRM implementation proof spanning UI workflows, typed APIs, data modeling, auth/RBAC boundaries, dashboards, and reporting paths.
Repository context
Private build. Discuss architecture and implementation decisions in interviews; do not present as public/open-source unless the repository is intentionally made public.