WORKSAASPROTOTYPE
JK Attendance
Workforce attendance platform built around GPS, geofence and selfie verification — for real field conditions, not ideal ones.
- Next.js 14
- React 18
- TypeScript
- Prisma 5
- PostgreSQL
- Zod
- Browser Geolocation API
- Browser MediaDevices API
System sketch — drawn from this build's own structure, not a screenshot.
About this build
JK Attendance rethinks attendance for teams that are not sitting in one office. Location-aware check-in, geofenced worksites and selfie verification replace paper registers and trust-based reporting.
It shares the SevaDesk workforce and tenancy core rather than re-implementing it — employees, shifts, leave and holidays are the same records, so attendance data joins the rest of the business picture instead of living in a separate tool.
WHAT THIS IS FOR
- Attendance for teams that are not sitting in one office — field sites, several locations, no supervisor on the ground.
- Replaces a paper register and trust-based reporting with data a manager can act on for payroll and disputes.
WHAT YOU GET FROM IT
- Three independent signals — geofenced location, selfie capture, shift assignment — must agree before a check-in counts.
- A check-in outside the worksite radius is refused on the server, so it cannot be talked past from the browser.
- The selfie is captured live from the camera stream, so a photo from the gallery cannot stand in for presence.
- Reports are built from the same employee records the rest of the business uses, not from a separate tool.
How it is structured
- Shift and roster definitions per tenant
- Check-in attempt with geofence evaluation
- Location read with maximumAge 0 — a fix cached minutes ago cannot be replayed
- Selfie taken from the live camera stream and encoded client-side; the upload is only part of the evidence
- A worksite is a point plus a radius in metres (100 by default); the attempt is tested against every zone attached to it
- Enforcement is server-side, so a modified client cannot approve its own check-in
- Attendance ledger as the record managers report from
- Shared with the SevaDesk workforce module — one employee record
What it does
- GPS-based check-in
- Geofenced worksites
- Selfie verification
- Employee and admin roles
- Attendance reports
What the staff member does
- Signs in to the tenant's employee surface and lands on My Attendance: today's record, the check-in and check-out times, nothing to interpret.
- One button, two states. It names the stage it is in — getting location, then capturing selfie, then submitting — so a failed check-in says where it failed instead of spinning.
- The location reading is taken fresh, never from cache, with a fifteen-second ceiling. A position from ten minutes ago cannot be reused to look like somewhere the person never went.
- The selfie comes off the live camera stream, cropped to its native frame and encoded as JPEG at quality 0.7. There is no gallery picker, so there is no posed photo.
- The device's word is not accepted. A check-in is refused outright if the selfie is missing, the location is absent, the accuracy is worse than the policy allows, or the point falls outside every zone on the worksite.
- If it went wrong — right person, wrong zone, forgot to check out — the employee files a correction with a reason and tracks its state in the same place. History and leave sit beside it under one login.
What the team uses
- One workforce surface for the tenant: live, attendance, corrections, employees, locations, shifts, leave, holidays and policies.
- Live shows who is checked in right now, read from the ledger rather than from a manager's recollection at the end of the month.
- Attendance is the ledger every report is cut from — per employee, per day.
- Corrections is the queue each request lands in, approved or rejected against the record instead of against who argues best.
- Locations holds each worksite as a point and a radius, and the radius is the whole argument about who was standing where.
- Policies sets, per tenant, whether GPS is required, whether a selfie is required, and the worst accuracy the system will accept.
- Shifts, leave and holidays write to the same employee record, so an approved absence and a missing punch stop being two different truths.
- Each decision leaves an event behind — the captured selfie is one of them — so a disputed day can be reconstructed instead of debated.
STATUS
In preparation
No screenshots here yet because none have been taken from a running attendance surface. The employee and owner screens are reachable only behind a tenant login on a local database, and publishing a staged or reconstructed screen would be worse than publishing none. Real captures go up once the surface is running somewhere it can be honestly photographed.
No standalone URL. JK Attendance is a route group inside the same SevaDesk deployable — the employee surface and the owner workforce surface are both reached through the tenant login, not a separate domain. It runs against a seeded tenant on a local database; the platform's production instance has no tenant provisioned on it yet.
One message — what happens today, and what you want instead. A straight answer within a day, including when it does not need building.
← All work