May 30, 2026 · 3 min
Spectator links for party games
Dungeon Jerks needed a way to watch the tavern without holding the dice.
Async Dungeon Jerks works: token in the URL, state on Netlify Blobs, three-second polling. Eight jerks, one phone passed around, or eight phones in eight zip codes.
Someone always isn’t playing. They’re cooking. They’re the kid who went to bed. They still want the narration.
Spectator vs. player
Players roll. Spectators read. Same room, read-only channel — no accidental tile placement, no “who kicked me off the wizard.”
We added share URLs that hydrate the log, the board, the character drama, without handing over controls. The creator still owns the room. Everyone else is audience with good seats.
Why polling didn’t change
We didn’t add websockets for v2. Blobs + polling is boring and shippable. Spectators piggyback the same poll loop. The UI just hides action chrome.
The effect audit pass landed the same week — ~70 roll-table rows that still said placeholder text got real mechanical copy. Spectators were reading junk lines out loud. Fixing the log made the watch experience worth sharing.
OG cards as a side quest
While touching marketing, we rasterized OG images at build. SVG social cards look crisp in Figma and break on X. static/marketing/og/*.png — committed, not generated on Netlify — so shares show the tavern, not a blank rectangle.
The loop
Open /play. Finish a round. Send the link. Send the spectator link to the group chat. That’s the growth model for a party game without an app store.
I’m not building esports. I’m building “my friends quoted the Hand of Fate at brunch.” Spectators are part of that.