jfmcarreira 561b6a2da9
App checks / changes (push) Canceled after 0s
App checks / tournament (push) Canceled after 0s
App checks / shifts (push) Canceled after 0s
feat: monorepo migration phase 3
2026-10-07 11:38:43 +01:00
2026-10-07 11:38:43 +01:00
2026-10-07 11:38:43 +01:00
2026-10-07 10:18:46 +01:00
2026-10-07 11:38:43 +01:00
2026-10-07 11:38:43 +01:00
2026-10-07 11:38:43 +01:00

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.

S
Description
No description provided
Readme
2.6 MiB
Languages
Python 42.2%
TypeScript 27.4%
Vue 15.4%
CSS 7.1%
HTML 5.9%
Other 1.9%