Built a multi-department Voucher Management System with Laravel 12 + Vue 3 — here's how I approached the workflow routing
I've been working on a system called VMMS (Voucher Management & Monitoring System) designed for government offices and companies that still manage document approvals through Excel and email chains.
I wanted to share how I approached a few interesting technical challenges in case it helps anyone building something similar.
Workflow Routing The trickiest part was making the multi-department routing flexible. Each department has a different approval flow, and I needed vouchers to move automatically to the next department once approved. I handled this by building a pipeline system where each voucher has a current stage, and the next stage is determined by the department configuration — not hardcoded logic. This made it easy to add or reorder departments without touching the core routing code.
Role-Based Access I used Laravel's Gate and Policies to handle three separate panels — Admin, Staff, and Client. Each role only sees what's relevant to them. Keeping the authorization logic in Policies rather than controllers kept things clean as the system grew.
Real-Time Pipeline Tracker I used Laravel Events and Listeners to trigger updates whenever a voucher moved stages, which also powered the automated email notifications at each step.
Staff Performance Leaderboard This was actually a last-minute addition but turned out to be one of the most appreciated features — just a simple query aggregating completed vouchers per staff member per period.
Live demo if anyone wants to see it in action: https://vmms-app-production.up.railway.app/login
Happy to answer any questions about the architecture or implementation decisions!