← Back to portfolio

Real-time · Collaborative SaaS

Independent product

Scrum Poker

A real-time planning room with hidden voting, atomic reveals, live roles, round history, and a clean handoff after estimation.

Abstract three-dimensional collaborative estimation room with synchronized cards.

Read this first

The system at a glance.

What I built
A collaborative estimation product for distributed engineering teams, usable with or without an account.
My contribution
End-to-end product and system delivery across room UX, real-time state, persistence, identity, and billing.
Core challenge
Keep every participant synchronized while preventing vote anchoring and duplicate reveal transitions.
Key technologies
React, Vite, Socket.IO, PostgreSQL, Drizzle, Better Auth, Stripe

Capability flow

How the system works.

Each step connects a user action to the system capability behind it.

  1. Open a room

    Authenticated teams or capped guest sessions create a persistent planning space.

  2. Synchronize participants

    Facilitator, voter, and spectator roles update as people join, leave, or transfer control.

  3. Vote without anchoring

    The server broadcasts who has voted but never exposes a value while the round is active.

  4. Reveal atomically

    The final eligible vote can reveal once, with average, median, range, and mode calculated for the room.

  5. Carry the decision forward

    Final estimates, revotes, and round history preserve the planning outcome for the next workflow.

Engineering judgment

Decisions that shaped the system.

Constraint
Two near-simultaneous final votes could otherwise reveal and broadcast the same round twice.
Decision
Make the voting-to-revealed transition atomic in the repository boundary.
Why it mattered
Every connected client receives one authoritative transition, even under concurrency.
Trade-off
The server owns more lifecycle logic instead of treating sockets as simple relays.
Constraint
The first visible estimate can bias everyone who has not voted yet.
Decision
Broadcast participation state during voting, but withhold values until reveal.
Why it mattered
The interface supports independent estimates without hiding team progress.
Trade-off
Clients need separate active-round and revealed-round payloads.

Technical evidence

Skills backed by this system.

Open any skill to see the other products and professional work connected to it.

Technology stack

  • React
  • Socket.IO
  • PostgreSQL
  • Drizzle
  • Better Auth
  • Stripe

Test the product surface

Move from architecture to a working interaction.

Try Scrum Poker in Product Lab