Wirehouse
2026Stock and cash accounting for a wholesale trader
- Problem
- A wholesale food business lives by two questions: what is in stock and what it cost, and where the money is — who owes us, which seller is holding cash, what is left after expenses. All of it in two currencies at once.
- My role
- Solo, full stack: Symfony API, Vue client, plus Android build via Capacitor, desktop build via Electron and receipt printing over ESC/POS. 127 test files on the API.
- Hard part
- Money is never a float and is never summed across currencies. Sales are allocated over batches FIFO, and four append-only ledgers record every movement — a cancellation appends the opposite row instead of editing history. Every posting path takes pessimistic locks in a fixed order, so two simultaneous requests cannot spend the same cash twice.
- Backend
- PHP 8.3Symfony 7.3API Platform 4Doctrine ORM 3PostgreSQL 15JWTPHPUnit
- Frontend
- Vue 3PiniaTailwind 4ViteCapacitorElectronESC/POS
- Infra
- DockerNginx
● one-click demo login




