Engineering Note

Your Git strategy can create more engineering problems than your code does.

Early in a startup, it's tempting to create separate repositories for everything.

Rails backend.
React frontend.
Background workers.
Infrastructure.
Shared libraries.

It feels clean.

But suddenly a small feature can involve:
3 repos → 3 PRs → 3 pipelines → 3 deployments.

That's where the trade-off starts becoming real.

With a monorepo, related applications and services can live together.

One change can be reviewed together.
Shared code is easier to manage.
Local development can be simpler.

But a monorepo can also become difficult when:

* Teams need independent ownership
* Deployments have very different lifecycles
* Repository size becomes a problem
* Build and CI boundaries aren't well defined

With multi-repo, teams get stronger isolation.

But you pay for it with coordination.

More repositories.
More pipelines.
More versioning.
More cross-repo changes.

For an early-stage SaaS, I usually start with the simplest structure that keeps the team moving.

Don't create repository boundaries because the architecture diagram looks cleaner.

Create them when there is a real ownership, deployment or scaling reason.

Important learning:
Your Git strategy is an engineering decision, not just a Git decision.

At startup stage, every unnecessary boundary adds coordination cost.

Optimize for team speed first.

You can split a repository later.

Removing unnecessary coordination is much harder.