
Stockholm | Fable 5.1 x Opus 5.5 Build Day · Claude Community · Epicenter Stockholm · 25 September 2026
Bubble-Catch is a set of party games played on a big screen, where every player uses their phone as the controller. You scan a QR code, pick a name and start playing, with no app to install. We built it from an empty repo in a two-hour session, with five people who had only just met and had very different levels of experience with Claude. In that time we shipped four games and pitched the result on stage.
We started with a room full of ideas and very little time. Rather than picking the most ambitious one, we looked for something everyone could contribute to and that would be fun to demo in front of a crowd. Games like Kahoot and Jackbox already show that people love joining from their own phones. So our only fixed starting point was simple: players move around with a joystick on their phone, and the big screen is the game world. We left the actual game undecided on purpose.
With five people and two hours, integration was the biggest risk, not the code. If everyone built against each other's unfinished work, we would lose the evening to merge conflicts. So the first step was a scaffold whose real product was the ability to work in parallel:
- A shared message contract. One package defines every message that moves between phone, server and screen. No app defines its own, so nobody's code breaks without warning.
- A server that just passes messages along. It handles rooms, join codes and player identity, and knows nothing about games. That kept the riskiest part of the system small and stable.
- The big screen runs the whole game. All game state lives in the host browser, which made each game easy to reason about and test.
- Phones send input only. Just a joystick direction and two buttons, A and B. Because the input is generic, the choice of game could stay open for as long as possible.
Why: a clear contract and clear boundaries meant each person could build and test their part alone against mocks, and then integrate in one step.
Each game is a self-contained module behind a fixed interface. Adding or swapping a game changes nothing in the server or the phone app. This is what let us grow from one placeholder game (coloured dots moved by your joystick, to prove the loop worked end to end) to four games running side by side:
- Tag / Infection: one player is IT and infects everyone they touch. Survive for 90 seconds.
- Meadow: hand-drawn animals collect bubbles, leaves, berries and flowers.
- Paint to Conquer: goo blobs paint the floor, and the biggest territory wins.
- Dots: the tiny demo game that proved phones -> screen worked.
A game picker on the big screen lets the room switch games without anyone having to rejoin.
Each of us worked on our own GitHub branch with our own Claude instance, following docs in the repo that set out what each person could change, what was frozen and how to test their part alone. Mock modes (keyboard players on the host, a fake controller, a fake server) meant nobody had to wait for anyone else's work to be finished.
Why: with people of mixed experience, the docs did the onboarding. Every Claude instance read the same rules, so the code stayed consistent even though five people and five AIs were writing it at the same time.
A demo only works if the audience can join. Phones on mobile data can't reach a laptop on the local Wi-Fi, so in production the server hosts both apps on a single port, and one ngrok tunnel covers both the phones and the big screen. Players keep their identity if their phone goes to sleep and reconnects, and the host can reclaim its room after a page reload.
I handled Git and integration: I merged everyone's branches, turned my laptop into the game host and got the tunnel running so the whole room could join from their phones. My other job was keeping the scope realistic. Plenty of good ideas got the answer "yes, and... maybe after the demo."
- Parallel work is a design decision. The contract and the module boundaries mattered more than any single feature.
- A small, clear scope is what lets strangers finish together.
- How you work is worth sharing. Teammates told us it was the most fun they had ever had at a hackathon, and that they had learned how branches and collaborating on GitHub work.
The team: Måns Hellgren (architecture and game engine), Barbora Gustafsson (art and Meadow), Viyan Portnoff (focus and direction), Megha Sainath (pitch and timekeeping), and me, Christopher State (Git, integration and hosting).
Tech: TypeScript (strict), Vite, native WebSockets, zod, Canvas, npm workspaces, ngrok.