Skip to content

Kiosk Mode

sarmakska edited this page May 31, 2026 · 1 revision

Kiosk Mode

The kiosk is a public, login-free page at /kiosk for shared devices at the office entrance. Staff clock in and out with a personal PIN, and reception can check visitors in. It is designed to work equally well on a wall-mounted tablet and on a phone.

Mobile-friendly design

The kiosk layout in app/kiosk/kiosk-client.tsx is responsive from the smallest phone up to a large tablet:

  • A mobile tab switcher toggles between the staff grid and the visitor panel on narrow screens, while wide screens show both side by side.
  • The staff grid scales its columns with the breakpoint (grid-cols-2 on phones up to 2xl:grid-cols-4).
  • Tap targets are large with active-press feedback for touch use.
  • The layout in app/kiosk/layout.tsx sets a fixed-scale viewport with viewportFit: cover, ships a PWA manifest, and enables Apple web-app mode so the kiosk can be pinned to a home screen and run full screen.

Clocking in and out

  1. A staff member taps their name, then enters their kiosk PIN on the keypad.
  2. authenticateKioskPin validates the PIN against user_profiles.kiosk_pin using the service-role client and reports whether the person is already clocked in and whether a work-from-home declaration blocks clock-in for the day.
  3. submitKioskAttendance writes or updates the day's attendance row, calculating hours on clock-out, and records a kiosk_clock_in or kiosk_clock_out event in the audit log.

Staff set or change their PIN under Settings, Kiosk PIN. Reception manages PINs for others under Admin, Kiosk Settings.

Visitor check-in

Reception can check pre-registered visitors in directly from the kiosk. The host receives an email and a printable PDF pass is produced. See the visitor flow in Home.

Security notes

  • The kiosk bypasses the normal login but every action is tied to a PIN and recorded in the audit log.
  • It uses scoped server actions for clock in or out and visitor check-in only; no other data is reachable from the public page.

Troubleshooting

  • Incorrect PIN. The PIN does not match any active user. Reset it under Settings, Kiosk PIN.
  • Clock-in blocked. The member has a work-from-home declaration for the day; the kiosk explains when clock-in is allowed.

Related

Clone this wiki locally