
A concrete block manufacture business ran billing off two independently maintained paper logs: a watchman’s record of what physically left the factory, and a salesperson’s record of what was sold.
The owner would manually cross-check these every week before labor payments — a tedious reconciliation process I automated.
I built a full-stack ERP that captures both records at the point of entry and reconciles them automatically, removing the weekly manual audit entirely. The system also covers trucks, inventory, production, customers and role-based access for watchman/salesman/production and admin users, with Metabase connected directly to Supabase for observing purchase trends.
**Tech stack:** Next.js • NestJS • PostgreSQL (TypeORM) • Supabase • Metabase


Every dispatch required two independent write-ups: the watchman logging what left the factory, and the salesperson logging what was sold. These are meant to match, in case either party made any typing or finger slip errors, but since they were recorded manually on a notebook, the owner needed to sit down weekly and reconcile line by line before billing - a slow error-prone process.
The goal was a system that solved the specific reconciliation process automatically as business was being conducted.
Watchman + Billing Modules:
The core of the fix. Watchman entries and sales entries are captured separately but cross-checked automatically against each other. the reconciliation page automatically reconciles both the records and also provides tools to make audit/edit easier. turning a 4-6 hr job to 20mins.


Trucks:
Tracks arrivals, departures, and what each truck is carrying, tying dispatch records to actual vehicle movement.


Users & Permissions:
Role-based access for watchman, salesperson, production and admin