Een monorepo is één broncode-repository die meerdere verwante projecten naast elkaar bewaart, in plaats van elk project zijn eigen losse repository te geven. Een webapp, een mobiele app, een gedeelde designbibliotheek en een set hulpmiddelen kunnen allemaal onder één dak leven, samen geversioneerd en makkelijk als geheel aan te passen.

Denk aan één gedeelde gezinskeuken versus iedereen zijn eigen keuken. In een gedeelde keuken is er één set goede messen, één gevulde voorraadkast, één koelkast, en iedereen gebruikt dezelfde goed onderhouden spullen. Als het zout op is, vul je het één keer aan en is het er voor elke maaltijd. Een monorepo is die gedeelde keuken voor code: gemeenschappelijke onderdelen staan op één plek, en een fix die je één keer maakt, is meteen beschikbaar voor elk project dat hem gebruikt. Dit alles rust op versiebeheer, meestal Git, dat de volledige historie van elke wijziging bijhoudt.

Het grootste voordeel is consistentie. Een wijziging die zowel de frontend als de backend raakt, kun je in één pull request maken, reviewen en mergen, en gedeelde code raakt nooit uit de pas. Grote monorepo’s leunen op tools als Turborepo of Nx om builds snel te houden.

De prijs duikt op naarmate hij groeit. Kloon je de repo, dan trek je alles binnen, de buildpijplijn moet uitzoeken welke projecten een wijziging echt raakt, en zonder vangrails breekt de aanpassing van het ene team aan een gedeeld pakket zomaar de app van een ander team. Daarom investeren grote monorepo’s vroeg in caching, eigenaarschapregels per map, en CI die alleen de projecten test die een commit werkelijk raakte.

Bij TopDevs gebruiken we monorepo’s als een klant meerdere apps heeft die code delen, zodat updates overal consistent blijven en er één duidelijke plek is om te kijken.