Check-in that only works on site.
Attendance is tied to a location, not to trust. It is also the gate the dispatcher depends on: someone who has not checked in cannot be sent a call.
geofence · leaveWalk away from the site. Watch check-in stop working.

Arrive, check in, work, check out
- 01
Share location
Web or Telegram. The bot asks for a location share; without one there is nothing to verify against.
- 02
The fence decides
Inside the radius the check-in is accepted. Outside it is refused, with the distance shown so it is obvious why.
- 03
The day is recorded
Timestamps in IST, against a Postgres date, never a JavaScript one, which shifts the day backwards across the timezone.
- 04
Absences close themselves
A nightly job marks anyone with no check-in absent, so the register is complete without anyone chasing it.
A ledger, not a spreadsheet
Leave lives in the same place as attendance because it answers the same question: who is available today. Requests go to management through the bot with approve and reject on the message itself.
- Casual leave
- One per month, accrued and tracked per employee.
- Half day
- Counted as half against the balance and prorated in payroll.
- Permission
- Short absences inside a working day, requested and approved the same way.
- Holidays
- Six common holidays only. Religious days are taken as approved leave rather than assumed for everyone.
- Approval
- Inline in Telegram. Approve or reject without opening a dashboard.
It does not stop here
These are modules of one system, not products sold separately. The next two are the ones this module touches most.
Asked often enough to answer here
What if someone genuinely works off site?
Field staff check in at the site they are at, and the fence is per-location rather than one office. Manual entries are available to managers and are recorded as manual.
Can the geofence be spoofed?
A determined person can spoof GPS on a rooted device. The fence raises the effort and removes casual abuse; it is not presented as tamper-proof.
What happens to the data at month end?
It becomes the payslip. See the payroll module: the two are the same records read differently.
See the fence refuse a check-in
The interesting half of an attendance system is what it will not accept.
