ADR 0004 Monorepo With Uv Workspace - lukislp/mowdeck GitHub Wiki
ADR 0004: Monorepo with a uv workspace
Status
Accepted (2026-10-08)
Context
The platform consists of many small services and libraries that evolve together and share contracts. Maintaining many repositories would multiply version and CI overhead.
Decision
Use one repository with a uv workspace (libs/*, services/*, tools/*) and one lockfile. Each service and library is its own Python package with its own pyproject.toml, README and tests, and each service builds into a separate image. Tooling is shared: Ruff, mypy (strict), pytest, Poe the Poet tasks, MkDocs. One CI covers everything.
Consequences
- One lockfile gives consistent dependency versions across services.
- Atomic changes across contracts, libraries and services.
- CI must stay fast as the repository grows: later we build only affected packages.
- Libraries remain independently versioned and publishable thanks to separate packages.
Mirrored from docs/adr/0004-monorepo-with-uv-workspace.md at commit 6a87264c6123f07c8474e153053525dc1816feb7. Edit the file in the repository, not this wiki page.