Field Day
A game weekend for 13 friends, run from everyone's phone and the TV.

I'm running a bachelor party weekend in Scottsdale, with 13 of us playing 14 events over three days, from Long Putt and Beer Die to poker on the last night. Field Day is the app I designed and built to run it. The TV is the room's scoreboard, and each phone holds your chips, bets and games.
- 14 events, 13 players
- TV plus every phone, in sync
- Cloudflare, React, Three.js
One round, start to finish
The event, the draw, the face-off, everyone's bets, the result, the standings and the winner's song, then the crown at the end of the weekend.
How it's built
- Cloudflare Durable Objects
- React
- Three.js
- A web app, added to the home screen at check-in
Every phone
- React and Three.js
- Each player's next game, chips, bets and buzzer
One Durable Object
- On Cloudflare
- Runs the whole game and decides every action
- One clock, so draws land everywhere at once
The TV
- React and Three.js
- The standings, the draw, face-offs and the crown, for the room
Why I built it
A weekend of scored games turns scorekeeping into someone's second job. Nobody agrees on the score, side bets are forgotten by Saturday night, and fixing one result breaks everyone's math. So I set a few rules before anything else.
- One number everyone trusts
- Nobody does arithmetic
- Every screen answers its question in a ten-second glance
- The host runs it from one button, because the host is playing too
The first version
It came together on July 19, with a leaderboard, betting, draws, a TV view and host controls, all on one server every phone talks to. It was called The Invitational, in black and gold. By that evening it was Field Day.
The ideas that still hold it together all showed up that first week.
- Everything is chips. One chip is 100 real ones, so your stack on Saturday night is your stack at the poker table
- Betting works like a rack of chips. Pick one and tap it onto a side
- You can only risk half your stack
- Standings are worked out from results, so fixing a result fixes every payout with it

The app was the invitation
I sent it out months early, so check-in was the first thing anyone saw, and it had to explain the weekend.
- Claim your spot on the roster
- Flights go in as boarding passes
- Build a player card with your chip color and photo
- Rate yourself privately, so team draws come out even
By the end of September, 12 of the 13 had checked in. Their answers were sitting in production, so no later redesign was allowed to reset anyone or send them back through setup.

Finding the look
In early September I tried a light redesign in paper and burgundy, with rewritten copy. I put it on staging and turned it down the next day. It was harder to use, and it lost what held the dark version together.
On October 1 I threw out visual rules I hadn't chosen and started over as a lit pinball backglass, with blue-black glass, bone-white type and lamps that each have one job.
- Magenta means live
- Amber means chips
- Cyan means information
- Yellow only ever means you
Anything that needed explaining got drawn instead. Every game's rules became three or four drawn steps.

Making the board feel alive
A scoreboard you glance at still has to tell you what just happened, so the moments got motion, and the motion got rules.
- Standings are towers of each player's chips that clack as they land and re-sort
- Draws reveal card by card on the TV and every phone at once, on one server clock
- Only fresh changes animate. A phone back from sleep shows the result without replaying it
- Win, and your song plays on the house speaker
Games on the phones
- Where and When. One of my photos goes up, everyone drops a pin and picks a date, and the reveal draws every guess to the answer
- Trivia started as a team game. A day later I made it individual, because on a phone it plays solo
- A Jeopardy-style board on the TV with every phone as a buzzer, ordered by each phone's own reaction time instead of whose signal arrived first
- Karaoke. Everyone picks a song ahead of time, and the room votes



Comebacks, and what I cut
I wanted a comeback to stay possible all weekend. On October 3 I added a bounty on the leader, better odds for the underdog, and byes for whoever was lowest on chips. The next day I cut two things.
- The leader bounty, because it took too long to explain
- Team MVP, a vote after each team game that played the MVP's song. By the time the vote ended, the song came too late
On October 13 the underdog odds gave way to something simpler, pool betting. The room's own bets set each side's price, so an upset pays what it should.
Play-in 1, pool of 1,200
YOUR STACK
1,000
The room's moments
When something worth yelling about happens, the TV reacts, whether it's an upset, a third win in a row, a new leader or a big losing bet. Each one is a short bit starring the players' own chips.
The first bits were cartoon slapstick with white gloves. On October 14 I redrew them as neon in the app's lamp colors, with chips that hop, spin and wobble and no hands. The winner's song now lands on the bit's beat.

The TV is the room, and the phone is you
- One Cloudflare Durable Object runs the whole game. Phones send actions, and the server decides
- The TV shows everyone, from standings and the draw to the face-off and the crown
- Your phone shows you, with your next game, chips, bets and buzzer
- Every match goes face-off, then bets, then lock
- A phone never replays a moment it missed. It shows where things stand

Where it is now
The newest version is on staging. What's left is what a screen can't test, like dragging chips on a real iPhone, how the 3D chips run on a phone, and how the TV feels in the room.
It isn't done until the weekend happens, October 30 to November 1. I'll add how it went.
In progress. Screens and clips are new renders of the staging build, made October 17 with sample data. Older versions are rebuilt from their commits, not period screenshots. Every name is a stand-in, and photos are placeholders.

