Construction workforce attendance: a scan pair sets the shift, closed rows the entitlement
Shifts hand over around the clock, and more than one subcontractor keeps a crew on the same ground. Duration comes from a matched scan pair — the gap between its two ends — so a night shift crossing midnight stays one span. Each row carries the person and the site together, which keeps hours in separate columns per subcontractor. Entitlement is derived from the closed rows themselves, with no second sheet beside them, so a disputed hour is settled against its own stamp. The phone side is React Native (Expo); Laravel receives the scans and MySQL stores them.
Read the case study →