Case study at a glance
The problem, my role, and the result.
- problem
- Most general-purpose tools force agency teams to flatten franchise-brand and location relationships or split them across disconnected records.
- stakes
- The data model has to stay flexible enough for different client structures while preserving clear access boundaries and future project-management relationships.
- My ownership
- I set the product direction and own the schema, architecture, user experience, implementation, documentation, and test strategy.
- outcome
- The current rebuild has working account, sub-account, contact, custom-field, event-log, access-control, user/team, and Gmail communication flows.
Synthetic product walkthrough
Working screens from the current prototype.
The private product name is intentionally omitted. These recreated screens use entirely fictional people, organizations, addresses, and conversations; the private repository and source are not published.




Architecture
The boundaries that made the work useful.
Flexible CRM relationships
Primary accounts can contain recursively nested sub-accounts. Contacts remain independent and can connect to more than one account or sub-account.
Relational foundation
PostgreSQL and Prisma make the relationships explicit and leave room for CRM records to connect cleanly with a future project-management service.
Scoped access
Tenant, role, team, and entity scopes are part of the application model instead of being treated as a UI-only concern.
Connected communication
Gmail connections, shared threads, communication logging, and reminders place conversations beside the people and accounts they affect.
Key decisions
What I chose and why.
- 01
Rebuilt the original Pages Router JavaScript application with the Next.js App Router and strict TypeScript.
- 02
Replaced MySQL and raw queries with PostgreSQL and Prisma to make the evolving relational model easier to reason about and migrate.
- 03
Redesigned the account model around primary accounts, recursive sub-accounts, and many-to-many contact relationships.
- 04
Used AI-assisted development to accelerate implementation, refactoring, documentation, and verification while retaining ownership of product and architecture decisions.
Outcome & evidence
What the repository and delivered work support.
- 01
The audited repository contains 23 route-backed screens, including account, sub-account, contact, communication, Gmail, user, team, role, custom-field, and integration settings flows.
- 02
The current Prisma schema contains 37 models covering identity, access, integrations, CRM relationships, communications, reminders, and supporting join records.
- 03
The repository includes 71 automated test files across actions, routes, UI components, permissions, CRM utilities, Gmail, and integration behavior; all 499 tests passed in the read-only audit.
- 04
The repository lint check and production build both completed successfully in an isolated read-only audit workspace.
- 05
All portfolio screenshots use entirely synthetic demo data. The source repository remains private.
Reflection
What I learned and what I would do next.
The rebuild reinforced that the hard part is not choosing a newer stack. It is making the domain model clearer so the interface, permissions, integrations, and future services can grow from the same foundation.
I would continue validating the model through real workflow usage before expanding the project-management and financial areas. The prototype is intentionally presented as in progress.
