Overview

image.png

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

Problem & Context

Screenshot 2026-08-01 185512.png

image.png

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.

What i Built

Screenshot 2026-08-01 185445.png

Screenshot 2026-08-01 185454.png

Screenshot 2026-08-01 185545.png

Screenshot 2026-08-01 193718.png