§ 03Case study
BuildFlowCRM
A CRM for commercial real estate with maker-checker approvals
A MERN CRM where five property types share one schema family, and every employee edit or delete waits for a manager's approval before it lands.
- Role
- Full-stack · Sole developer
- Timeline
- 2025 – 2026
- Core stack
- Node.js, Express, MongoDB
- Live
- Private client deployment
- area
- 42,000 sq ft
- rent / sq ft
- ₹28 ₹31
edited
in review
approved
employee rent ₹28 → ₹31
pending PendingAction → manager
approved change applied to record
Fig. 1An employee's edit waits for a manager before the record changes.
01
The brief
A commercial real-estate brokerage was running on spreadsheets. They deal in five kinds of property (warehouses, corporate offices, coworking, retail and managed offices), and each has its own fields, so one flat property table didn't fit. Several people edit the same records, and the owners wanted to review changes before they went live.
02
One schema family, five property types
Each kind of record has a base schema, and Mongoose discriminators add the fields specific to each property type. A coworking listing has seats and setup fees, and a warehouse has docks and floor area, but they share one collection and one set of validation rules.
03
Maker-checker approvals
When an employee edits or deletes something, the change isn't applied. It becomes a pending action assigned to their manager, and the record shows as under review until it's approved. One collection holds pending actions for every kind of record through a dynamic reference.
Everything can be exported to Excel and imported back with validation. Documents upload to Cloudflare R2, and the API runs behind JWT cookie auth, helmet and rate limiting, tested with Vitest and Supertest.
By the numbers
- property types
- 5
- access control
- 2-tier
- import & export
- Excel
- API tests
- Vitest