Monorepo or multi-repo
One repo for everything, or one repo per service? The choice shapes your daily dev life for years. Here's when a monorepo is a gift, when it becomes a burden, and how I decide.
One repo for everything, or one repo per service? The choice shapes your daily dev life for years. Here's when a monorepo is a gift, when it becomes a burden, and how I decide.
For a single product with front, back and shared code — the typical SaaS case — a monorepo is almost always the right call. Sharing types between front and back alone often justifies the structure.
Tools like Turborepo only rebuild/retest what changed, with a shared cache: a big monorepo’s CI stays fast.
Teams that share nothing benefit from separate repos, with their own permissions and cadence.
A Go service, a JS front, a Python data pipeline: shared tooling becomes a headache.
Without cache or incremental build, every push rebuilds everything. The monorepo turns slow.
Services that must deploy at very different rhythms live better apart.
The per-subfolder CLAUDE.md is exactly the point of the basics of Claude Code.
There's no universal winner: monorepo shines on a single product with shared code, multi-repo on truly independent services. In doubt, start grouped and extract later. The worst choice is changing your mind every six months.
Turborepo docs ↗