CRM Platform
An in-progress multi-tenant B2B CRM where each company works in its own workspace to track leads, deals and customers and carry a sale from estimate through proposal, contract and invoice, built on a Fastify API that also covers projects, support tickets, a knowledge base and team chat.
- My Role
- Full Stack Developer
- Timeline
- Dec 2025 — Mar 2026
- Status
- In progress

CRM Platform is a multi-tenant B2B system under active development: every company operates inside an isolated workspace where its team follows leads and deals, manages customer records, and moves each sale through the full document chain — estimate, proposal, contract, invoice. The same backend reaches past classic CRM into project tracking, support tickets, a knowledge base and internal team chat, so a single API serves the whole workflow.
The codebase is a monorepo with an apps/ layout, built around a Fastify API written in TypeScript on top of PostgreSQL. A docker-compose setup reproduces the full stack locally for development. The project took shape over roughly 75 commits between December 2025 and March 2026 and remains a work in progress.
What it does
Isolated company workspaces
Each tenant company gets its own workspace, keeping its leads, deals and customer data separated from every other tenant on the platform.
Estimate-to-invoice pipeline
A sale advances through a connected document chain — estimate, proposal, contract, then invoice — so the commercial paperwork follows one deal from first quote to billing.
Modules beyond sales
The same Fastify API also serves project tracking, support tickets, a knowledge base and team chat, so the work that follows a sale stays in the same platform.
Built with
Frontend
With one language across the monorepo's apps, TypeScript lets the request and response types for deals, documents and tickets be shared and checked at compile time instead of discovered at runtime.
Backend
Fastify's plugin encapsulation and schema-validated routes keep a single API that spans CRM, tickets, knowledge base and chat organized as distinct modules without splitting into separate services.
Data
A CRM is inherently relational — companies, contacts, deals and the documents attached to them — and PostgreSQL enforces those foreign-key relationships while keeping each tenant's data transactionally consistent.