CRR tools
Two independently runnable applications migrating into one monorepo:
- Tournament: Vue 3 and the temporary legacy Node backend.
- 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 Shifts dependencies using the single root uv.lock and creates the
root .venv. Tournament joins that workspace when the FastAPI backend is ported.
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.