Skip to content

tysoncung/gameon

Repository files navigation

GameOn - Pickup Game Coordinator

Live Demo Next.js MongoDB License: MIT

Organize pickup games with your crew. Players RSVP via WhatsApp or web. No app to download.

Live Demo | Report Bug | Request Feature


The Problem

Organizing pickup sports games is chaos. Group chats get buried. Nobody knows who's coming. The organizer spends more time counting heads than playing.

The Solution

GameOn lets players RSVP with a simple WhatsApp message or web link. The organizer sees a real-time headcount. Everyone knows if the game is on.

Features

  • WhatsApp Bot - RSVP by texting in, out, in +2 (bring friends), status
  • RSVP on Behalf - Add others: in @Dave, out @Sarah
  • Web Dashboard - Create games, share invite links, track RSVPs
  • Group System - Invite codes for your regular crew
  • Admin Panel - Manage all groups and games
  • Auto Reminders - Daily cron job pings players who haven't responded
  • Player Stats - Track attendance across games

How It Works

WhatsApp Group           Twilio              GameOn API            MongoDB
+-------------+    +---------------+    +----------------+    +-----------+
| "in +2"     |--->| Webhook relay |--->| Parse + store  |--->| RSVPs     |
| "status"    |<---| Send reply    |<---| Query + format |<---| Games     |
+-------------+    +---------------+    +----------------+    +-----------+

Web flow: Share invite link -> Players open in browser -> One-tap RSVP

Tech Stack

Layer Tech
Frontend Next.js 16 (App Router), Tailwind CSS v4, dark theme
Backend Next.js API Routes, Mongoose ODM
Database MongoDB Atlas (M0 free tier)
Messaging Twilio WhatsApp Business API
Hosting Vercel (Hobby)

Quick Start

# Clone
git clone https://github.com/tysoncung/gameon.git
cd gameon

# Install
npm install

# Configure
cp .env.example .env.local
# Edit .env.local with your MongoDB URI and Twilio credentials

# Run
npm run dev

Open http://localhost:3000.

Environment Variables

MONGODB_URI=mongodb+srv://...
TWILIO_ACCOUNT_SID=your_sid
TWILIO_AUTH_TOKEN=your_token
TWILIO_PHONE_NUMBER=whatsapp:+14155238886
CRON_SECRET=your_secret

WhatsApp Commands

Command Action
in RSVP as going
in +2 RSVP with 2 guests
in @Dave RSVP Dave as going
out Cancel RSVP
out @Dave Cancel Dave's RSVP
status See current headcount
help List all commands

Project Structure

src/
  app/
    api/
      games/          # CRUD for games
      groups/         # Group management
      webhook/
        whatsapp/     # Twilio webhook handler
      announce/       # Send game announcements
      cron/
        reminders/    # Daily reminder cron
      stats/          # Player statistics
    g/[invite_code]/  # Public group pages
    admin/            # Admin dashboard
    create/           # Create group flow
  lib/
    models.ts         # Mongoose schemas
    mongodb.ts        # DB connection
    whatsapp-bot.ts   # Bot command parser
    twilio.ts         # Twilio client
    utils.ts          # Helpers

Roadmap

  • WhatsApp bot with RSVP commands
  • Web dashboard with invite links
  • RSVP on behalf of others
  • Admin panel
  • Auto reminders (daily cron)
  • Google auth + user profiles
  • Recurring games (auto-create weekly)
  • Web push notifications
  • Weather check (auto-warn if rain)
  • Venue search (Google Places)
  • Leaderboard + attendance streaks
  • PWA (installable on phone)
  • Mobile app (Expo)

Contributing

PRs welcome! See issues for ideas.

License

MIT


Built by Tyson Cung

About

Pickup game coordinator - organize sports games via WhatsApp bot or web. Next.js + MongoDB + Twilio.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages