CRR tools
Two independently runnable applications migrating into one monorepo:
- Tournament: Vue 3 and FastAPI on Python 3.13.
- Shifts: FastAPI, Jinja, SQLAlchemy and Alembic on Python 3.13.
- CRR brand: shared logo, favicon and CSS primitives.
See the migration plan and verified progress and baseline evidence.
Development
Requires Node 22+, Python 3.13, uv, and make.
make tournament-install
make tournament-test tournament-build
make shifts-test
make test
uv resolves both backend projects using the single root uv.lock and creates
the root .venv. Each backend runs from its own directory and owns its database,
models, authentication and migration history.
Run make tournament-backend-dev and make tournament-frontend-dev in separate
terminals, or make shifts-dev for Shifts. App-specific environment setup is
documented in each application's README.
Deployment
Docker Compose 2.24+ supports the optional per-app environment files:
docker compose up --build tournament
docker compose up --build shifts
Each service has its own Dockerfile, image, database volume, and credentials.
Set the application's secrets in its environment file before deployment.
Release tags will be app-specific: tournament-v... and shifts-v....
Baselines
originals/ is read-only, including its nested Git repositories. Baseline checks
run in disposable .migration/ copies using make baseline-test; production
code and CI run exclusively from apps/. See migration/README.md for fixture
and screenshot commands. Root Docker contexts exclude both the snapshots and
migration artefacts.