Joshua Terranova
Back to highlights

Personal product

KumonScan · Center Attendance

2026–Present

Laptop, notes, and coffee on a desk during software work
Photo by Unsplash on Unsplash
Projects

Desk name check-in with Math/Reading/Both, overtime timers, absences, CSV reports; QR kiosk still available.

KumonScan replaces paper sign-in sheets with per-student QR codes and a front-desk roster. Staff check in by name with Math / Reading / Both; the kiosk still toggles check-in and check-out for students who bring a code.

React + Vite front end (Material Design 3), Express.js API, SQLite via better-sqlite3. Timestamps come from timeapi.io; the API rejects check-in and check-out when that service is unreachable.

Journal

What I worked on during 2026–Present. Hover underlined terms for quick definitions.

Users and failure mode

Paper sheets record who signed in, not who is still in the room or who is overtime. Staff need a live Desk list without walking the floor. Students need a kiosk that works on a shared tablet: large type, one next step, scan.

I split the UI by role. Students get a full-screen scanner with a live clock and explicit check-in vs. check-out labels. Staff get Desk check-in with subject selection, open-session timers, Completed today, absence list, and 30-day charts.

Time and session logic

The browser clock is easy to use and wrong for audit. Phones drift; kids share devices. The API calls timeapi.io before writing a session and returns an error if the service is down.

Desk check-in sets a 30-minute allowance for one subject and 60 minutes for both; overtime rows turn red and show overage minutes. QR first scan of the day checks a student in (subjects default to enrolled subjects or both); the next scan while checked in checks them out. Reads within 3 seconds of the prior scan are ignored.

Admin and analytics

Staff register students, set enrolled subjects and scheduled weekdays, generate QR codes, and deactivate accounts from the admin panel. Registration is capped at 10 requests per minute; admin routes use httpOnly cookie sessions.

Desk generates an absence list for students expected that weekday who never checked in. The dashboard flags students with three or more visits in seven days, plots 30-day attendance in Recharts, and exports monthly or rolling 12-month CSV (visits, total minutes, overtime count).

Related highlights

All highlights