ClickBox Photobooth: Kiosk to Gallery
A Windows kiosk app, a FastAPI backend, and a guest gallery running across a fleet of booths at live events, each device authenticating as itself.
Every ClickBox event has a physical kiosk running a Windows desktop app, talking to a backend that has to stay correct under conditions a normal web app does not face: unreliable venue Wi-Fi, machines that are not always online, and guests who want their photos right away. I built it for my own events, with AI-assisted tooling, and I run it at every one of them.
One device, one identity
Each kiosk authenticates as itself with a Cloudflare Access service token scoped to that device, so the three booths never share one API key. A lost or compromised kiosk can be revoked on its own without touching the others. The admin dashboard, used by a person in a browser, sits behind a separate session-based Access policy.
One gallery instead of two
The gallery serves a booth’s per-guest session pages and the per-event galleries the automation pipeline publishes, from the same origin and the same static asset store, so there is one thing to operate. That meant reconciling the pipeline’s manifest format with what the gallery frontend expected.
Secrets rotate on a schedule
Kiosk-facing secrets rotate on a fixed schedule, with a written runbook and an automated reminder. A fleet of devices at live events is where a forgotten rotation turns into a booth going dark mid-event. Kiosks go offline and venues have bad Wi-Fi, and a guest waiting for a photo does not care why, so the whole platform is built to keep working when parts of it cannot.