3 min read

spoker

nextjs react chakra-ui firebase typescript zustand

Overview πŸ”—

spoker is a real-time multiplayer Scrum Poker application built from the ground up using Next.js, TypeScript, and Chakra UI. It enables teams to estimate story points collaboratively with real-time synchronization.

The app had organic adoption in its early days. While usage has slowed since, I continue to maintain and evolve it. It’s become a personal playground for trying out new ideas and staying sharp with modern React patterns.

Why I Built This πŸ”—

I built this to improve upon the scrum poker experience my office EPD (Engineering-Product-Design) team were using during backlog planning. I saw opportunities to enhance the interface design, responsiveness, and overall reliabilityβ€”so I decided to build a better version tailored to our team’s needs.

I prototyped it in a week and iterated on it based on user feedback.

Key Features πŸ”—

Real-Time Collaborative Rooms πŸ”—

Multiple users join a room and see updates instantly using Firebase Realtime Database for synchronization.

Anonymous Voting πŸ”—

Votes remain hidden until all participants vote or the moderator chooses to reveal, preventing anchoring bias.

Role-Based Access πŸ”—

Support for different permission levels including room owners, participants, and observers.

Task Management πŸ”—

Queue-based workflow for organizing and tracking estimation tasks.

Build Notes πŸ”—

Real-Time Synchronization πŸ”—

Firebase Realtime Database syncs votes and room state across all connected clients instantly. No custom server needed β€” Firebase handles the real-time infrastructure.

Architecture for Future Features πŸ”—

The codebase is structured to allow adding future features (analytics, integrations, paid tiers) without major rewrites. The current tech stack is Next.js and Chakra UI v3, kept up to date as a personal playground for modern React patterns.

Shipped in a Week πŸ”—

The initial prototype was built in one week and shared publicly. Usage has since slowed, and it now serves as a personal playground for trying out new ideas and keeping up with modern React patterns.