The problem
Paper timesheets and group-chat "I started at 7" messages don't scale across a field team spread over farmyards, factories and rooftops. GEO Electrical needed a dead-simple way for crews to record their hours — with proof of where they were — and a way for the office to turn that into payroll without re-typing anything.
What we built
A focused web app with two sides: a phone app for the crew and a dashboard for the office. No app-store install — it's a PWA, so workers just "Add to Home Screen" and it behaves like a native app.
On the phone
Each worker picks their name, taps in a 4-digit PIN, and hits Clock In or Clock Out. Every punch captures GPS location, and a running total shows their hours today and this week.

For the office
The boss dashboard shows a weekly hours grid per employee, drill-down into each shift with clickable GPS map links for every punch, and a one-tap "Download CSV for payroll." The office can add/remove staff, set PINs, and fix a missed punch in seconds.
Built for the real world
Rural jobs lose signal, so the app is offline-first: it loads with no connection, queues punches on the phone with a clear "will send when you have signal" banner, then syncs automatically — and every punch carries a unique id so nothing can ever double-count.
It's also honest about time:
- A forgotten clock-out counts zero hours and is flagged "FIX BEFORE PAYING" rather than silently racking up time; shifts over 16 hours are flagged too.
- Live punches use the server's clock, so changing a phone's time does nothing.
- Offline punches that sync with a wrong device clock are auto-corrected and flagged for review.
- Brute-force lockout protects the 4-digit PINs.
The build
Built on Node.js and Express with a clean vanilla-JS PWA front end and a simple file-backed datastore — deliberately lightweight so it runs on a cheap Node host with a persistent disk. Branded end-to-end in GEO Electrical's identity.
The outcome
The crew clocks in from their pocket in seconds, every punch is stamped with a place and a trustworthy time, and payroll goes from a chase-up to a single CSV download.
A different shape of project entirely — not a marketing site but a working tool — held to the same Pixrweb bar for speed, clarity and craft.


