Sign in
Enter your admin credentials.
Change your password
You must set a new password before continuing.
Dashboard
Open shifts
employees who clocked in but didn't clock out| Employee | Since | Open hours |
|---|
Attendance summary
Export CSV| Employee | In | Out | Hours |
|---|
Employees
Add employee
All employees
| Name | Badge | Status |
|---|
Kiosks
Add kiosk
One-time secret (shown once)
Open /kiosk.html on the kiosk device and enter this
secret once. The kiosk will exchange it for a device session and the
secret will never be used again.
All kiosks
| Name | Office | Sessions | Status | Last seen |
|---|
Device sessions
Pick a kiosk above to see its device sessions.
| Label | IP | Created | Last seen | Status |
|---|
Events
Export CSV| Time | Employee | Event | Office | Kiosk | Conf | Flags |
|---|
Suspicious activity
Flagged events
| Time | Employee | Event | Conf | Flags |
|---|
Currently locked out
| Employee | Failed (last 10 min) | Locked until |
|---|
Repeated failed PIN attempts
| Employee | Attempts | Last attempt |
|---|
Recent failed attempts
| Time | Employee | IP | Reason |
|---|
Yards (geofence)
Add yard
A yard is a circular geofence around the office. Clock-ins outside the circle are flagged.
Existing yards
| Office | Name | Lat,Lon | Radius (m) | Active |
|---|
Identity review
Correction proposals
Propose a correction
Any manager+ can propose. A different admin or owner must approve.
Pending
| Created | Employee | Type | Proposed time | By | Reason |
|---|
Recently decided
| Decided | Employee | Status | By | Note |
|---|
Users
Add user
Only owners can add users.
New users must change their password on first login.
All users
| Role | Status | PW |
|---|
Backup & export
Exports
All exports are filtered by the date range above.
Daily ledger checksums (preview)
Publish these to make tampering with past events detectable: anyone who keeps a copy can re-verify the chain later.
| Date | Events | SHA-256 | HMAC |
|---|
Database backup
The application stores all attendance data in PostgreSQL. To back up:
- Take a logical dump with
pg_dump:pg_dump "$DATABASE_URL" --no-owner --no-privileges \ --file=backup-$(date +%F).sql
- Store the dump in encrypted off-site storage (S3 SSE, GCS CMEK, etc.).
- Schedule daily: cron / managed service / hosting provider's backup tool.
- Quarterly: verify a restore into a staging database and run
/api/admin/verify-ledger/:employeeIdon a few employees to confirm the hash-chain is intact. - Also export the daily ledger checksums (button at left) and store them separately from the dump — that way a tampered restore can't quietly rewrite history.
The APP_SECRET / LEDGER_SECRET / BADGE_SECRET are not in the database. Back them up via your secrets manager.
Audit log
| Time | User | Action | Entity | IP |
|---|