Meeting bingo that runs on Cloudflare's free plan
Code and schematic on GitHub: github.com/nickcupo/bingo
Every long meeting has the same lines in it. “You’re on mute.” “Let’s take this offline.” “Can everyone see my screen?” This turns them into a bingo card, one per person, and lets the whole call watch each other’s progress in real time.
How it plays
- One shared password gets you in. Then a name and a stamp: a character, an emoji, or an image you upload.
- Everyone gets their own random 5 by 5 card from a shared item list that anyone can edit. There is a free square in the middle.
- Your name is your identity. Open it on your phone later and your card is there.
- A Players panel shows every card, how far along each person is, and live odds of who wins next.
- Nobody can declare their own bingo. You open someone’s card, check the line, and two other people have to approve before it counts. You can also contest a single square on someone’s board, and the card owner or an admin rules on it.
- One game per quarter, with a recorded winner per season and a running history, plus a stats tab that counts how often each person has marked each item.
How it is built
Cloudflare Workers, one Durable Object per room holding state in SQLite, and native WebSockets for the live updates. The front end is plain HTML, CSS, and JavaScript with no build step and no framework. The whole thing fits inside Cloudflare’s free plan, so hosting costs nothing.
The Durable Object is the interesting part. Each room is a single instance that owns its players, cards, marks, votes, and history, so there is no database to set up and no race between players marking squares at the same time. Reconnects, migrations from an older version that keyed players by browser instead of by name, and admin-only actions all live in that one file.
Running your own
Clone it, set a password, npm run dev to try it locally, wrangler deploy to put it
on Cloudflare. Put your own names in the admin list. The default item list is generic
meeting stuff; edit it live from inside the game.
Everything above is in the repository: github.com/nickcupo/bingo
Tagged cloudflare, workers, durable objects, websockets, games.