Rock Paper Scissors Tournament

Real-time competitive RPS tournament platform with a retro arcade theme, run live on campus.

  • TypeScript
  • React
  • Node.js
  • Socket.IO
Rock Paper Scissors Tournament cover

Problem & user context

Campus events needed a familiar game with zero setup that worked on any student phone. Rock-paper-scissors fits. Running a fair, fast tournament with live brackets by hand does not scale past a handful of players.

Constraints & tradeoffs

  • Real-time on flaky campus Wi-Fi. Socket.IO reconnection handling keeps a dropped connection from forfeiting a match.
  • Zero-install. Players join the web app from a URL without an account or app store download.
  • Retro arcade theme. A deliberate CRT and arcade aesthetic makes a simple game feel like an event.

Architecture

Players (mobile browsers)
   │  Socket.IO
   ▼
Node.js game server ── match state, bracket progression, anti-cheat timing
   │
   ▼
React frontend ── lobby, live bracket display (big screen), match UI

Screenshots

Watch the showcase video for the live tournament in action.

Results & lessons

  • Successfully hosted live tournaments on the Cy-Fair campus with a projected live bracket.
  • I spent about 20% of the state-sync work on the happy path and 80% on reconnection and edge cases. Designing the state machine first helped us handle them.