Overzicht
In deze repository bouw ik een webapp, CLI en portfolio. De webapp en CLI delen productpackages. Het portfolio gebruikt alleen neutrale content en tooling. Ik heb de workspace, apps, packages en checks zelf opgezet.
Uitdaging
In een monorepo is code delen eenvoudig. Zonder duidelijke eigenaar kunnen packages echter ongewenste dependencies tussen apps verbergen. Ik wilde code delen waar dat nuttig is, zonder de apps aan elkaar te koppelen.
Aanpak
Elke app bezit zijn routes, UI en platformintegraties. Productpackages bevatten
de regels en componenten voor dat product. @repo/content levert gevalideerde
content in het Nederlands en Engels via een typed API. Linting, TypeScript en
testconfiguratie worden gedeeld.
Dependencies lopen van apps naar packages en van productpackages naar lagere lagen. Het portfolio gebruikt geen productpackages. Die grens staat in de architectuurdocumentatie en is zichtbaar in de dependencies van de app.
Mijn bijdrage
Ik richtte de pnpm- en Turborepo-workspace in, legde de verantwoordelijkheden van apps en packages vast en voegde gedeelde checks toe. Voor de contentlaag bouwde ik validatie, controles op ontbrekende vertalingen en een typed API.
Kwaliteit en werkwijze
Lokaal draaien linting, typechecking en tests. Git-hooks controleren commits en pushes. CI bouwt en test de webapp, controleert browserflows en draait een gerichte accessibility-suite. De architectuurdocumentatie legt de packagegrenzen vast.
Resultaat en afwegingen
De apps hebben duidelijke eigenaren en delen alleen code waarvoor een gezamenlijke behoefte bestaat. Zo blijft het portfolio onafhankelijk en blijft productcode bij het product.