Attendance software fails on the boring details. Leave is rarely a single day, so a one-date field forces staff to file five separate requests for one week off. Rejections without a stated reason generate a follow-up conversation every time. And a penalty recorded without being visible to the person it applies to becomes a dispute at payroll. The system also had to hold up on a phone, since most check-ins happen at a gate rather than at a desk.
We built a React 19 and TanStack Router client against a Laravel API, with authentication moved from Sanctum to JWT plus silent token refresh so a shift is never interrupted by a re-login. Leave requests carry start and end dates as a genuine range, categorised by permission type; approvals and rejections record a reason that the employee sees, and penalty amounts surface in the same history rather than only in an admin report. The UI is HeroUI with a custom theme, responsive down to phone width, and the whole stack is containerised behind Caddy for deployment.
Separate employee and admin workflows
Leave requests spanning multiple days
Designed & engineered by Manggala Code