The problem
Salespeople made sales on paper. The supervisor forwarded the paper to bookkeeping. Bookkeeping retyped every document into a formal invoice and dispatch note. Roughly 50 salespeople at about 5 sales a day means around 750 documents a day going through manual re-entry. Growth of the sales team meant proportional growth of the back office. Indigo Distribution wanted to move from a regime where the number of typists limits sales growth to a regime where software does that job.
What we built
We developed a system of three interconnected applications and one backend. The field app for salespeople is a Next.js PWA optimized for the phone — it doesn't require installation, runs from the browser — with modules for customers, documents (new and existing), warehouse (stock and cards), and profile. The central back-office dashboard covers the whole chain across eight separate domains: overview, organization and companies, customers with locations, sales (invoices, dispatch notes, delivery notes, credit notes, return notes), catalog (items, prices, types, units, tax rates), warehouse (storage, transfers, adjustments, goods receipts), finance (customer payments and salesperson payouts with commissions), bookkeeping, and personnel. The backend is in .NET as a modular monolith with a separate test suite for PDF document generation — invoices and dispatch notes don't arise from typing in Word; they're generated server-side from the database, with the same structure every time.
Modules & surfaces
- Field app for salespeople (PWA)A Next.js app optimized for the phone — no install. The salesperson sees their customers, creates new documents, looks at history, tracks the stock of the warehouse they work from.
- Dashboard — overviewHome page for the back office with key metrics of the day's operations.
- Organization and companiesSettings for the company itself, sub-organizations, permissions.
- Customers and locationsCustomer registry with multiple delivery locations — one customer, multiple sites, unified overview.
- Sales — full document chainInvoices, dispatch notes, delivery notes, credit notes, return notes — all five types with linked life cycles and server-generated PDFs.
- CatalogItems, types and units of measure, tax rates — a single source of truth for everything that's sold.
- Warehouse and stockWarehouses, goods receipts, transfers, stock adjustments — warehouse operations as a separate unit connected to sales.
- FinanceCustomer payments and salesperson payouts with commission calculations — the full cash flow through the system.
- BookkeepingAn accounting module — recording documents in accordance with Serbian accounting rules.
- PersonnelSalespeople, system users, and employees — separate registries with different roles and access.
- PDF document generationServer-side generation of all documents (invoices, dispatch notes, credit notes…) with a separate test package guaranteeing visual stability.
How we approached it
We mapped the existing processes — every form, every handoff, every signature — and modelled the document chain as a state machine in which every piece of paper has a clear life cycle. The field app was designed for one-handed use on a phone — salespeople aren't at desks. The back office was designed mostly for review, not entry — bookkeeping becomes a reviewer. We extracted PDF generation into a separate component with a dedicated test suite, because invoices and dispatch notes carry legal weight — they can't look different from version to version.
Outcome
~750 documents a day no longer require manual typing. Bookkeeping moves from the role of typist to the role of reviewer — the same team can support a growing sales network. The full document chain becomes end-to-end auditable, with server-generated PDFs that always have the same structure.