Inspiration
The event organisers wanted to spread the crowd across food booths to eliminate the long queues at any one stall. I proposed an optional, web-based activity tracker that adds a hunt layer on top of the event without forcing participation.
What I did
This was my first application — the project where everything started. I built a check-in and scavenger-hunt web app for Kampung Spirit 2025 with HTML/JS and a Firebase backend, available at github.com/8holic/kampungspirit25. Around 50 participants used it at the event.
- Participants register and get a digital card, plus a map of where the stations are
- Session state is kept server-side via a session ID, so progress persists across browsers
- Check-in on arrival by scanning a QR code
- Each food booth has a QR code; scanning once records the claim, and a second scan prompts “already got once”
- Only some booths are hidden “Treasure” booths — scanning reveals whether it’s a treasure or not
- Rotating treasure codes keep the hunt fresh, so people can’t learn which booths are treasure booths
- A mini-game at certain booths recognises parts of olden days, records the fastest time and score, and feeds into the prizes
- The tracker is fully optional — if participants skip it, the event runs exactly as before
What I’m proud of
- Designing it as a low-barrier, optional layer — no negative impact on the event if unused
- Rotating treasure codes, a detail that keeps the game fair and replayable
- Seeking committee approval for a trial run before going ahead
- Users were impressed by how the app caches progress and keeps the session alive across browsers
What can be further improved
- Group registration. The event is family-oriented, yet the app only registers per person — a common feedback point was that families with multiple members want to register together. This was overlooked and is the top candidate for the next iteration.
- Responsive UI. The interface is basic and barebones, and lacks proper mobile layout — on phones it scales awkwardly. A mobile-first pass is long overdue.