planning poker · on Cloudflare

Estimate together, without the overhead.

Create a room, share the link, vote on a Fibonacci deck, reveal together, start a new round — synced live between everyone in the room. No accounts, no subscriptions, nothing to install.

Rooms close for everyone after 2 hours. Creating a room takes an invite key from whoever runs this deployment. Joining one only takes the link.

♠
?
5

How a round goes

Three requests, one shared room. Every participant sees the same state at the same time — reveal shows everyone's card, plus the average of anything numeric.

Start estimating screen: name and creator key fields, a Create room button, and a room code field to join an existing room
♣STEP 1

Create or join

Pick a name, create a room with the creator key, and share the link — or drop in a room code someone sent you. Nothing to sign up for.

Room in progress: the header shows the room code, live · WebSocket, and the creator's Close room button; Alex has voted 5, Bob hasn't voted yet
♥STEP 2

Vote in private

Everyone picks a card. Who's voted shows up live — what they picked stays hidden until the room reveals. The header shows the live connection.

Revealed votes: Alex voted 5, Bob voted 21, average shown as 13.0
♦STEP 3

Reveal, discuss, repeat

One click flips every card at once. See the spread, talk it out, then start a new round when you're ready.

♠

Almost permissionless

Anyone in the room can reveal, start a new round, or edit the topic. The one exception: only the creator can close the room early.

♥

Actually live

Votes, joins, and reveals push to every open tab instantly over a WebSocket — with Server-Sent Events as the fallback on networks that block them.

♦

Fibonacci + wildcards

1, 2, 3, 5, 8, 13, 21, plus a ♠ wildcard and a ? pass — both excluded from the average automatically.

♣

Cleans up after itself

A room closes 2 hours after it was created, whatever is happening in it, with a warning near the end and a countdown at the finish. Need longer? Start a new one.

same product · different platform

A port, not a copy

This is the Cloudflare port of proto-poker, rebuilt from the original Vercel app's code. Rooms, the HTTP API, and the frontend carry over unchanged; underneath, each room is a single Durable Object that owns its state, serializes every write, and pushes changes to its own connections — no database, no pub/sub, no retry loops. Where the platform allowed better, the design changes on purpose: hibernatable WebSockets instead of SSE alone, so an idle room costs nothing, and rooms that close themselves instead of waiting out a 4-hour TTL.

BUILT WITH
Vanilla Web Components Cloudflare Workers Durable Objects Hibernatable WebSockets SSE fallback Zero build step