# ADR-0001: Polyglot monorepo, TS for apps, Python for ML ## Status Accepted — 2026-04-13 ## Context We ship web and mobile clients, backend services, and ML training/serving. Splitting into many repos early creates cross-repo PRs for every contract change and hurts velocity. ## Decision One monorepo, managed with pnpm workspaces for TS and uv/poetry for Python. Shared contracts live in `packages/shared-types` generated from OpenAPI. ML is Python; everything else is TS. ## Consequences - One CI system, one versioning flow, atomic cross-service PRs. - Requires disciplined boundaries: services must still be independently deployable. - Tooling complexity: two package managers, two lint stacks. Acceptable given the ML/app split.