Case study · Internal tool · In daily use
Padma ERP
Orders for Padma Lights arrive on WhatsApp, calls and email. I built the order desk that tracks each one from first message to delivery, and what every customer still owes.
Status: Private and in daily use. It holds real customer and payment data, so this page shows how it works rather than screenshots.
Problem
Orders, advances and balances lived in chat threads and spreadsheets. Nobody could say at a glance who owed what, or which order was waiting on what.
What I built
- Orders from quote to delivered, with payments and a timeline
- Customer ledgers with outstanding balances
- A printable one-page A4 proforma
- A lead pipeline with follow-up dates
Current state
- Runs on one PC, used from phones on the home Wi-Fi
- An Android launcher app
- A product and price editor that publishes to padmalights.com
My role
Product, back end and front end. I worked out the rules from the business's own invoices: how packing and transport are charged, how GST splits inside and outside the state, and how proformas are numbered.
The detail that matters
When an order is put on hold or cancelled, the matching ledger entry is reversed. Without that, the outstanding balance drifts and nobody trusts the numbers. With it, the ledger always agrees with the orders.
Stack and process
FastAPI, SQLAlchemy and SQLite on the back end; React, TypeScript, Tailwind and Vite on the front end, served by one process. A Capacitor launcher for Android. Built with Claude and Cursor; I own the rules, the data and the checks.