The problem
Operations ran on spreadsheets and a legacy desktop app. Dispatchers needed real-time visibility into shipments, drivers needed mobile-friendly status updates, and management wanted reporting that did not require an analyst to produce.
Architecture decisions
Tenancy is enforced at the Eloquent layer with global scopes keyed on organisation_id, verified by feature tests. Heavy reports read from materialised views refreshed by a scheduled queue job, keeping dashboard queries under 50 ms regardless of table size.
Outcome
The platform replaced three internal tools, cut dispatch turnaround by roughly a third, and has run with zero unplanned downtime since launch.