A web application for organizing 2v2 pickleball matchups, managing events, tracking ratings, and maintaining rankings across multiple groups/leagues.
- Frontend: Vue 3 + TypeScript + Vite
- Backend: Python FastAPI (Vercel Functions)
- Authentication: Clerk (JWT)
- Database: Supabase Postgres
- π Multi-group support with custom settings per group
- π Two rating systems: Serious Elo & Catch-Up mode
- π― Smart matchmaking with teammate/opponent constraints
- π Rankings, match history, and win rate tracking
- π Real-time event management with player swaps
- π± Responsive, mobile-first design with dark mode
/
βββ frontend/ # Vue 3 + TypeScript application
βββ backend/ # FastAPI application
βββ docs/ # Architecture and API documentation
βββ vercel.json # Vercel deployment configuration
- Node.js 20+
- Python 3.11+
- Clerk account (for authentication)
- Supabase account (for database)
# Install frontend dependencies
cd frontend
npm install
# Install backend dependencies
cd ../backend
python -m venv .venv
.venv\Scripts\activate
pip install -r requirements.txtCopy .env.example to .env in both frontend and backend directories and fill in your values.
VITE_API_BASE_URL=http://localhost:8000
VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
SUPABASE_DB_URL=postgresql://...
CLERK_JWKS_URL=https://your-clerk-instance.clerk.accounts.dev/.well-known/jwks.json
CLERK_ISSUER=https://your-clerk-instance.clerk.accounts.dev
CLERK_AUDIENCE=your-audience
ALLOWED_ORIGINS=http://localhost:5173
Run the SQL migrations in your Supabase SQL editor (see docs/database-schema.md).
cd backend
.venv\Scripts\activate
uvicorn app.main:app --reload --port 8000cd frontend
npm run dev# Backend tests
cd backend
pytest
# Frontend tests
cd frontend
npm run testThe application is designed to be deployed on Vercel:
- Connect your repository to Vercel
- Set up two projects:
- Frontend: Root directory =
frontend - Backend: Root directory =
backend
- Frontend: Root directory =
- Configure environment variables in Vercel dashboard
- Deploy!
Once running, visit http://localhost:8000/docs for interactive API documentation.
See CONTRIBUTING.md for guidelines.
MIT