Estrategia de organización de código donde múltiples proyectos coexisten en un único repositorio, compartiendo dependencias, configuración y herramientas de build.
Un monorepo es un repositorio único que contiene múltiples proyectos distintos con relaciones bien definidas entre ellos. No es simplemente «todo el código en una carpeta» — es una estrategia arquitectónica con herramientas especializadas.
En un modelo polyrepo (un repositorio por proyecto), los equipos enfrentan:
El monorepo centraliza todo en un solo lugar con herramientas que manejan la complejidad.
Buena opción cuando:
Evitar cuando:
| Herramienta | Enfoque | Lenguaje | Características clave |
|---|---|---|---|
| Turborepo | Build caching | JS/TS | Caché remoto, pipelines declarativos, zero-config |
| Nx | Full-featured | JS/TS | Generators, affected commands, graph visualization |
| pnpm workspaces | Package manager | JS/TS | Symlinks eficientes, strict dependencies |
| Lerna | Publishing | JS/TS | Versioning coordinado, changelogs (ahora parte de Nx) |
| Bazel | Hermetic builds | Políglota | Reproducibilidad, escalabilidad extrema (Google-scale) |
| Pants | Hermetic builds | Python/Go/Java | Similar a Bazel, mejor DX |
| Rush | Enterprise | JS/TS | Políticas estrictas, phantom dependencies detection |
La comparación más común en el ecosistema JavaScript:
Turborepo — minimalista, se integra con tu setup existente, excelente caché remoto con Vercel. Ideal si ya tienes un monorepo y quieres acelerar builds sin cambiar mucho.
Nx — más opinionado, incluye generators para scaffolding, plugins para frameworks específicos, visualización de dependencias. Mejor si empiezas de cero o quieres estructura guiada.
monorepo/
├── apps/
│ ├── web/ # Next.js app
│ ├── mobile/ # React Native app
│ └── api/ # Backend service
├── packages/
│ ├── ui/ # Shared components
│ ├── utils/ # Shared utilities
│ └── config/ # Shared ESLint, TS configs
├── turbo.json # Pipeline configuration
├── pnpm-workspace.yaml
└── package.json
Paquetes que nunca se publican a npm — solo se consumen dentro del monorepo:
{
"name": "@repo/ui",
"private": true,
"exports": {
".": "./src/index.ts"
}
}Definir dependencias entre tareas para paralelización correcta:
{
"pipeline": {
"build": {
"dependsOn": ["^build"],
"outputs": ["dist/**"]
},
"test": {
"dependsOn": ["build"]
}
}
}El build de un paquete que no cambió se recupera del caché en lugar de re-ejecutarse:
# Primera vez: ejecuta build
turbo build # 45s
# Segunda vez (sin cambios): recupera del caché
turbo build # 0.3s@repo/utils que crece sin control y todos dependen de éljonmatum.com usa Turborepo + pnpm workspaces con apps/web (Next.js) y packages/knowledge (pipeline de contenido). El caché de Turborepo reduce el build de ~45s a menos de 1s cuando solo cambia contenido MDX.
La decisión entre monorepo y polyrepo afecta la velocidad de desarrollo, la complejidad del CI/CD y la capacidad de compartir código entre equipos. No hay respuesta universal — pero entender los trade-offs evita meses de migración dolorosa cuando la elección inicial no escala.
Sistema de control de versiones distribuido creado por Linus Torvalds en 2005. Fundamento de todo flujo de desarrollo moderno — desde commits locales hasta colaboración global.
Modelo de branching minimalista diseñado para continuous deployment. Solo dos elementos — main y feature branches — con PRs como punto de integración y deploy inmediato tras merge.
Conjunto de prácticas técnicas y culturales que implementan los principios DevOps — desde Infrastructure as Code hasta blameless post-mortems. El «cómo» detrás de la filosofía.
Crónica de construir un segundo cerebro con grafo de conocimiento, pipeline bilingüe y endpoints para agentes — en días, no semanas, y lo que eso enseña sobre la brecha entre teoría y sistemas que funcionan.
Plantilla reutilizable para crear micro frontends con React, TypeScript, Tailwind CSS y Vite. Incluye sistema de diseno, testing y CI/CD.
Shell de micro frontends con sistema de diseno completo, 24 componentes, 666 tests y cumplimiento WCAG AA. Publicado en npm como @jonmatum/react-mfe-shell.
Aplicación de demostración interactiva para el sistema de diseno React MFE Shell con PWA, métricas automatizadas y showcase de componentes.
Estilo arquitectónico que estructura una aplicación como colección de servicios pequeños, independientes y desplegables, cada uno con su propia lógica de negocio y datos.
Patrón arquitectónico que extiende los microservicios al frontend, permitiendo que equipos independientes desarrollen y desplieguen partes de una aplicación web de forma autónoma.
Aplicación de prácticas de desarrollo open-source dentro de una organización, permitiendo que equipos contribuyan a proyectos de otros equipos con procesos transparentes.
Disciplina enfocada en optimizar la productividad, satisfacción y efectividad de los desarrolladores mediante herramientas, procesos y entornos bien diseñados.