Track League of Legends ranked elo across a group of players. Shows start-of-day elo, current elo, and daily LP change for each player.
Built with React + TypeScript (Vite) on the frontend and Django + Django REST Framework on the backend, with Celery for scheduled elo snapshots at midnight.
- Add/remove players by Riot ID (
GameName#TAG) - Persists players across page refreshes (SQLite database)
- Displays Solo/Duo rank: Start of Day, Current, and LP Change
- LP change highlighted green / red / yellow
- Celery task snapshots all players' elo at midnight daily
| Layer | Tech |
|---|---|
| Frontend | React, TypeScript, Vite |
| Backend | Django, Django REST Framework |
| Scheduler | Celery + Redis |
| Database | SQLite (dev) |
| Data | Riot Games API |
cd client
npm install
npm run devRuns on http://localhost:5173.
cd server
pip install -r requirements.txt
cp .env.example .env # fill in your values
python manage.py migrate
python manage.py runserverRuns on http://localhost:8000.
Requires Redis running locally (redis.io or WSL).
# Terminal 3 — worker (Windows: add --pool=solo)
celery -A config worker -l INFO --pool=solo
# Terminal 4 — beat scheduler
celery -A config beat -l INFOCopy server/.env.example to server/.env and fill in:
| Variable | Description |
|---|---|
RIOT_API_KEY |
From developer.riotgames.com |
SECRET_KEY |
Django secret key |
DEBUG |
True for local dev |
CELERY_BROKER_URL |
Redis URL (default: localhost:6379) |
Note: Riot dev API keys expire every 24 hours. Regenerate at developer.riotgames.com.