Python web app with a FastAPI backend and a Streamlit frontend for creating and running tournaments.
- Create tournaments with individual or team names, participant count, and setup
- Setups: single elimination, double elimination, round robin, groups → knockout, Swiss
- Simple A/B score entry (draws allowed in round robin / Swiss / group stage)
- SQLite persistence (no auth in v1 — open edit access)
- Rounds:
ceil(log2(n))(overridable on create) - Pairing: score-group pairing, avoid rematches when possible
- Tie-breakers: points → Buchholz → Sonneborn–Berger → name
backend/ FastAPI application
api/ HTTP routes
core/ Settings
db/ SQLAlchemy engine/session
models/ Enums, DB models, Pydantic schemas
services/ Tournament engines + orchestration
frontend/
app.py Streamlit UI
data/ SQLite DB (created at runtime)
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envTerminal 1 — API:
uvicorn backend.main:app --reload --port 8000Terminal 2 — UI:
streamlit run frontend/app.py- API docs: http://127.0.0.1:8000/docs
- Streamlit: http://localhost:8501