Back to project
Point&Play - Helps teams to work and have fun

Point&Play - Helps teams to work and have fun

Project Overview

DEMO: https://point-and-play-web.vercel.app/

Point&Play is a lightweight, no-login planning poker app built for agile refinement calls. It lets a team spin up a shared session, vote on story points with simple point cards, and reveal results together in real time — no accounts, no database, no setup. To keep everyone relaxed while they wait for stragglers to vote, Point&Play even ships with an optional multiplayer Pong mini-game right in the waiting room.

Building Point&Play

Point&Play was an opportunity to focus on real-time collaboration and a clean, frictionless meeting experience. The goal was to make estimation calls fast and fun — open a link, type your name, and start voting in seconds, with a moderator who can drive the room.

This project also emphasized ephemeral, in-memory session state on the server, allowing teams to collaborate instantly without authentication or persistence. If the server restarts, sessions simply disappear — a deliberate, acceptable trade-off for the MVP.

Tech Stack

  • Next.js 16 (App Router): The foundation for routing and app structure.
  • React 19: For a dynamic and fast real-time client experience.
  • TypeScript: Enforcing type safety across the frontend, server, and a shared contracts package.
  • Tailwind CSS & shadcn/ui (Base UI): For consistent, responsive, and modern styling.
  • Socket.IO: For low-latency, bidirectional real-time collaboration between participants.
  • Standalone Node server on GCP Cloud Run: Holds all session state in memory, scaling to zero when idle to stay effectively free.
  • Recharts: For the reveal-time vote distribution pie chart.
  • Sonner & next-themes: For toast notifications and light/dark theming.

App Features

  • Instant Sessions: Create a room with your name, a refinement theme, and a moderator toggle — then share the link.
  • Point Card Voting: Everyone votes with familiar point cards; the moderator reveals when ready.
  • Live Reveal & Distribution: See each participant's vote plus a color-coded pie chart of the spread.
  • Round Titles & Vote History: Name each round (moderator) with editable titles, and review the whole session's history.
  • Countdown Timer: The moderator can start/reset a shared timer (minutes and seconds), with an alarm and toast for everyone when it finishes.
  • Buzz the Non-Voters: The moderator can buzz anyone who hasn't voted yet, complete with a sound.
  • Personal Colors & Presence: Each participant gets a customizable color used for their presence dot and their Pong paddle.
  • Moderator Controls: Reveal, reset rounds, run the timer, buzz, and remove participants from the session.
  • Pong Waiting Room: An optional real-time multiplayer Pong game to keep the room entertained between rounds.

Challenges Faced

  • Real-Time State Sync: Keeping every participant's view of votes, reveals, timers, and presence perfectly in sync over Socket.IO.
  • Serverless Split Architecture: Vercel can't host a persistent WebSocket server, so the app is split into a Vercel frontend and a Cloud Run socket server sharing a typed contracts package.
  • Cost & Abuse Hardening: Making a public, no-login endpoint safe and near-free with scale-to-zero, rate limiting, session/participant caps, and idle-session eviction.
  • Cold-Start UX: Smoothing over the ~1–3s Cloud Run wake-up with a friendly "waking up the server" loading experience.

Conclusion

Point&Play is a fast, playful planning poker app built for teams who just want to estimate and move on. The project highlights real-time collaboration, a pragmatic split serverless architecture, and thoughtful cost/security trade-offs for a public no-login tool. It shows how modern frontend and lightweight backend tooling can deliver a genuinely collaborative experience without databases or accounts.

Disclaimer: Point&Play is a personal project built for learning and portfolio demonstration purposes!