Headington Portal
Replaced a spreadsheet with a system, and cut check-in time by 67%.
At a glance
- Role
- Solo engineer, end to end
- Timeline
- Jun 2023 to Jan 2026
- Status
- Shipped and used in production
- Stack
- faster check-in (60s to 20s)
- 67%
- returning visitor check-in
- <10s
- peak batch checkout
- <7s
Staff dashboard. Current check-ins, fast visitor lookup, and batch checkout in one view.
Overview
A full-stack visitor management platform for university housing, replacing paper forms and scattered spreadsheets.
This one ran in production with real staff depending on it. Nothing teaches you about edge cases like a front-desk clerk using your software at 2am during move-in weekend.
The problem
Guest registration ran on paper forms and disconnected spreadsheets. A question as basic as "who is currently checked in?" meant digging through several systems, and peak traffic turned that into a queue at the desk.
What I built
- REST APIs with role-based access control separating staff and clerk permissions.
- React and Redux Toolkit front end that eliminated redundant data entry between check-in steps.
- Data models with optimized search paths so returning visitors resolve from a single lookup.
- Production deployment and operations on Render. I owned it from schema to uptime.
Notes
Things that surprised me, or that I got wrong first.
Optimizing for the returning visitor
Most guests are not new. Indexing and pre-resolving returning visitors is what turned a 60-second form into a sub-10-second confirmation, which is where nearly all the real-world time savings came from.
Batch operations for peak load
Checkouts cluster, because everyone leaves at once. A batch checkout path handles the whole group in under 7 seconds rather than forcing the clerk through one record at a time.
Say hi
If you want to talk about Headington Portal, or anything on this page, I'd love to hear from you. Email me or use the contact page.
