
The build
Shiftwise came out of a contract job for a scaffolding firm whose crews were logging hours on paper and losing them. The requirement was blunt: it has to work in a van with no signal, with gloves on, in under five seconds.
It is a native Kotlin and Jetpack Compose app with an offline-first store — every clock-in is written locally and reconciled later, so a lost connection never loses a shift. Overtime rules, break deductions, and weekend multipliers are configurable per employer rather than hardcoded.
Payroll export is deliberately boring: a CSV that opens correctly in the spreadsheet the site manager already uses.
What is in it
Offline-first by design
Shifts are written to local storage first and reconciled when signal returns. No spinner, no lost hours.
Gloves-on targets
The clock-in control is a 96 dp target on the home screen and reachable from a lock-screen widget.
Configurable overtime rules
Daily and weekly thresholds, unpaid breaks, and weekend multipliers set per employer.
Payroll-ready export
CSV and PDF timesheets generated on device, shareable straight into email or a messaging app.
