Ledger: Inventory & Invoicing System
An all-in-one operations system that replaced spreadsheets and three SaaS subscriptions for a growing distributor.
- Year
- 2023
- Timeline
- 14 weeks
- Category
- Business Management System
- 3 → 1
- Tools consolidated
- −90%
- Time to issue an invoice
- 99.9%
- Stock-count accuracy
The Problem
A distributor ran inventory, invoicing, and purchasing across spreadsheets and three tools. Counts drifted and nobody trusted the numbers. They needed one source of truth non-technical staff could use daily.
The Solution
Ledger: a business management system for inventory, purchasing, invoicing, and reporting. Stock updates in real time, PDF invoices generate on demand, and a role-based dashboard shows live margin and cash flow.
My Role
Lead full-stack engineer. Gathered requirements from warehouse and finance staff, modeled the domain, built the Laravel + React app, and deployed on a hardened VPS.
Tech Stack
- Laravel
- React
- MySQL
- Tailwind CSS
- Docker
- DigitalOcean
- Ubuntu VPS
How it fits together.
The high-level architecture: services, data stores, and the external systems they talk to.
Approach
The hard part was the domain model, not code. I mapped how stock moved (PO → received → sold → invoiced) and made every state change an auditable event, which is why counts finally matched reality. PDF generation and email run on a queue so the UI never blocks.
Highlights
- Role-based permissions for warehouse, finance, and owner.
- Full audit trail: who changed what, when.
- Nightly backups to object storage with a tested restore path.
Screens