Case study · 2026
Ticket Pointing
Real-time planning poker built for teams that need to decide together, not merely collect votes.
Try Ticket Pointing ↗- Role
- Product designer and full-stack engineer
- Outcome
- A public collaborative estimation product with a Go primary backend, Node.js fallback, and shared contract tests.
- Capabilities
- Product engineering · Real-time systems · Production operations
- Stack
- React · TypeScript · Go · PostgreSQL · WebSockets
Case record
The problem
Estimation meetings lose momentum when the tool gets in the way. The product needed to support anonymous participation, facilitator controls, private rooms, reconnecting clients, and a reveal that stayed synchronized for everyone.
The constraints
- Real-time state had to survive ordinary browser reconnects.
- The production backend could change without forcing a client rewrite.
- Anonymous rooms still needed clear ownership and abuse boundaries.
- The system had to remain understandable enough to operate on a small server.
Pivotal decisions
The browser speaks one stable event protocol while two backend implementations remain contract-compatible. Go serves production traffic; Node.js remains a health-checked fallback. Backend-independent contract tests make the failover path something that can be exercised rather than merely described.
Connection handling treats short disconnects as expected behavior. A grace period prevents a stale disconnect event from erasing a participant who has already reconnected, while session tokens preserve identity across refreshes and renames.
What it demonstrates
This project is the most direct expression of the workshop: a recognizable problem, a product people can use immediately, and operational details that remain invisible until they are needed.