everything in one place.
one repo per service.
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.
Coding in the terminal with an agent: the mental model, the commands that matter, and how to keep it on the rails.
The real playbook: tagging, rightsizing, Savings Plans vs Spot — without breaking production.