- webapp/: FastAPI dashboard to add/remove participants and exclusions,
view draw history, and trigger the draw (reuses main.run_draw()).
Optional HTTP basic auth via WEBAPP_USERNAME/WEBAPP_PASSWORD.
- file_io.py: add add/remove_participant, add/remove_exclusion, load_year
helpers backing the web GUI's CRUD actions.
- Dockerfile + docker-compose.yml: containerize the web GUI, with CSV_PATH
bind-mounted to a host folder so participant data persists outside the
container. Verified with a local docker compose build/up smoke test.
- README: document the web GUI, Docker usage, and the exclusions CSV file
(existing feature that wasn't documented yet).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Codifies the dev/main branching model and secret-handling rules being
introduced alongside the upcoming container/web GUI work, so future changes
(by humans or agents) stay consistent.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- draw.py/file_io.py/main.py: wire in exclusion pairs so the draw can avoid
configured giver/receiver combinations.
- utils.py: add get_last_n_years helper.
- env.py: load configuration from environment variables (via .env) instead of
hardcoding real SMTP/CSV secrets in a tracked file; add .env.example as the
template and gitignore .env.
- test_draws.py: drop hardcoded personal path, use env.py config instead.
- add requirements.txt for the upcoming web GUI/container work.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>