# MTG league tracker Leaderboard and results dashboard for a Magic league run on melee.gg. See `CLAUDE.md` for design notes. ## Run ``` cp .env.example .env # fill in DB_PASSWORD, SECRET_KEY (openssl rand -hex 32), ADMIN_PASSWORD (10+ chars) docker compose up -d --build ``` Listens on `${BIND_ADDR:-127.0.0.1}:${HOST_PORT:-8888}`. Put a reverse proxy in front and set `COOKIE_SECURE=true` once on https. Sub-path hosting: set `BASE_PATH=/mtg` and proxy with Caddy `handle_path /mtg/*`. ## Develop ``` npm install npm test # parser + standings tests npm run check # type-check DATABASE_URL=postgres://... SECRET_KEY=... ADMIN_PASSWORD=... npm run dev ``` Whole stack locally with podman (own `.env.local` with generated secrets, own project/volume, port 8889): ``` scripts/local.sh up # build + start, prints URL and admin password scripts/local.sh logs | ps | down scripts/local.sh reset # down and delete the local database ``` Needs `podman compose` (podman 4.7+ with docker-compose or podman-compose) and the user socket: `systemctl --user enable --now podman.socket`. ## Using it Admin login, create a league (set how many top sessions count), add a session per night, then upload the Melee matches export (one per round) or standings export on the session page, and set each player's deck.