Hello friends! We're designing our next iteration of deployment tooling, and wanted to get a feel for whether startups with < 10 engineers structure their code in a monorepo or multi-repo way. (no judgement either way).<p>Do you -<p>1. Mono-repo (frontend + backends + services + infra [...]) all in 1 repo)<p>2. Multi-repo (separate out frontend, from backend / each services /) or any other cross-repo structure<p>What's your guys' structure?
We are building an application/infra platform, Noop [0], it's multi-repo, one key benefit is it facilitates the deployment of different system components with greater isolation.<p>That said, I'm a big fan of mono-repo. Noop actually supports developing mono-repos in a really interesting way. Here's an example [1] Vue + Node backend in one app. It should be pretty straightforward to see how you might be able to extrapolate that to more services when needed by looking at the .noop/blueprint.yaml in the linked repo.<p>0. <a href="https://noop.dev" rel="nofollow">https://noop.dev</a>
1. <a href="https://github.com/noop-inc/template-nodejs-vue">https://github.com/noop-inc/template-nodejs-vue</a>
Guess it depends on your definition of a mono-repo vs multi-repo. I'd consider what we have as a mono.<p>We have one repo which is our main web application (user dashboard, landing page, etc..), our API, and our scheduled tasks. With how much code is shared between these services it just makes sense to keep them together.<p>We then have separate repo's for other services that aren't critical or apart of what was mentioned above.
Not at a startup, but at a small company (<10 developers) we regretted not doing a mono-repo.<p>We had our own GitLab instance and we were all open source enthusiasts and building micro-ish services, so it seemed natural for us to do multi-repo.<p>Eventually we realized it was creating a lot of unnecessary overhead, as we often were submitting patches for a single ticket to multiple repos which all required separate reviews.
I have 4 repos.<p>All the backend work is in one repo. The monolith has everything including the core API services, background/batch processing, etc.<p>I have a mobile repo but we aren't ready at all yet to work on mobile. It is a flutter app, but mostly proof of concept type stuff.<p>Then there's 2 repos for web UI. One is a next js app for generating applications for customers, and the other is a standard react SPA which is what customers use to build their applications.
Mono-repo, mono-language, and really enjoying it - enables much easier refactoring and using a single strongly typed language makes lots of issues go away. We do have a few other repos for open source projects or libraries we publish, but the majority of the work is done on our mono-repo.
Mono-repos forever and always, lessons learned in the last 20 years ;)<p>Currently running this in a single repo: <a href="https://github.com/openkoda/openkoda">https://github.com/openkoda/openkoda</a>