Skip to content

Repository files navigation

PONG ROYALE

Real-time beer pong tournament app for party-scale events. Players sign up with selfies, form teams, play matches on multiple tables, and climb the Elo leaderboard — all from their phones.

Live Demo

Features

  • Selfie Signup — snap a photo, pick a name, get a recovery PIN
  • Smart Matchmaking — Elo-based pairing across multiple tables with automatic suggestions
  • Team Challenges — directly challenge another team to a match
  • Live Leaderboard — individual and team rankings with real-time Elo updates
  • Cup Grid Tracking — report results with a visual 10-cup grid showing which cups were hit
  • Tournament Recap — end-of-night stats, MVPs, cup heatmaps, and match history
  • Admin Panel — manage tournament phases, resolve disputes, seed data, pause/unpause players
  • Mobile-First — designed for one-handed use in dim lighting with 48px touch targets

Tech Stack

Layer Tech
Frontend React 19, TanStack Start / Router, Tailwind CSS v4
Backend Convex (real-time DB, file storage, server functions)
Hosting Vercel with SSR via Nitro
Package Manager Bun

Getting Started

# Install dependencies
bun install

# Start dev server (web + Convex backend)
bun run dev

Requires a Convex project. Set VITE_CONVEX_URL in .env.local with your deployment URL.

Project Structure

src/
  routes/           # Pages — signup, dashboard, leaderboard, teams, admin, recap
  components/       # Shared UI — BottomNav, BottomSheet, CupGrid, MatchCard, Toast
  lib/              # Utilities — session tokens, image compression
  styles.css        # Design system — CSS custom properties, utility classes

convex/
  schema.ts         # Database tables — players, teams, matches, challenges, tournament
  matchmaking.ts    # Match suggestions, acceptance flow, result reporting, Elo calc
  players.ts        # Signup, recovery, session management
  teams.ts          # Team formation, dissolution, roster queries
  challenges.ts     # Direct team-vs-team challenge system
  elo.ts            # Elo rating algorithm
  tournament.ts     # Tournament state machine (signup → active → paused → finished)
  stats.ts          # End-of-tournament statistics and aggregations
  helpers.ts        # Shared backend utilities

Deploy

# Production deploy (uses prod Convex DB)
VITE_CONVEX_URL="https://your-prod.convex.cloud" bunx vercel build --prod
bunx vercel deploy --prebuilt --prod --yes

About

Real-time beer pong tournament app with Elo matchmaking, team management, and live leaderboards

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages