Skip to content
AKArnav Kumar
All work

§ 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
warehouse · bhiwandi · inventory/warehousedraft edit
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

Stack

Node.jsExpressMongoDBMongooseReactTailwind CSSCloudflare R2Vitest