12+ branches. Hundreds of tickets. One system that handles all of it.
Managing electronics repairs across branches sounds manageable — until every stage of every ticket, every payment, every technician action, and every branch's finances need to be tracked, gated, and audited. Separately. Simultaneously.
The Problem
Branches operated in silos. Tickets had no enforced workflow — stages got skipped, costs got missed, approvals were informal. Financial records were branch-specific but impossible to oversee centrally. And customers had no way to check repair status without calling in. Not a small problem. A systemic one.
The Solution
A complete repair operations platform — engineered around a state-machine-driven ticket workflow where every stage is gated, auditable, and role-appropriate. Nothing moves forward without the right person approving it. Two surfaces. One backend. Zero workflow chaos.
What I Built
- State-machine ticket workflow: intake → device registration → technician assignment → in-progress → addon requests → cost finalization → payment — every stage enforced
- Addon request system with manager approval and separation of duties — no self-approvals
- Multi-method payment recording with voiding, full audit trails, and cash account management
- Inter-branch cash transfers, income tracking, customer credit ledgers, and general ledger — all scoped per branch
- Real-time dashboards for revenue trends and technician performance
- 6-tier role hierarchy (Super Admin to Technician) with branch-level data isolation and Laravel Policy-based authorization
- Public REST API powering a Next.js 16 customer portal — track repair status with just a ticket number, no login required
- Built on Laravel 13 + Tailwind CSS across 12+ branches
The Result
Every branch. Every ticket. Every transaction. Gated, audited, and finally under control.