Angular · NestJS · MikroORM
Un libro de ingeniería de software para dominar el stack TypeScript full-stack de principio a fin: desde el motor de JavaScript y el sistema de tipos, hasta la reactividad con señales, la inyección de dependencias, el patrón Unit of Work, el modelado relacional, la seguridad, el despliegue y la preparación de entrevistas técnicas. Sin resúmenes, sin omitir lo avanzado.
Se guarda en este navegador. Marca cada capítulo con el botón «Marcar como leído» de su barra superior.
Prólogo: por qué este stack y cómo leer este libro
Angular, NestJS y MikroORM comparten una misma filosofía: TypeScript en todas partes, decoradores como metadatos, inyección de dependencias como columna vertebral y arquitectura explícita por encima de la magia implícita. Aprender los tres a la vez no es tres veces el esfuerzo: es aprender un modelo mental y aplicarlo en tres capas.
La coherencia no es casual. NestJS se diseñó explícitamente inspirándose en Angular (mismos decoradores,
mismo sistema de módulos, mismo contenedor de inyección de dependencias). MikroORM, por su parte, encaja
como una pieza natural en ese diseño porque implementa el patrón Data Mapper: las entidades son
objetos de dominio limpios y el EntityManager es un servicio inyectable más. El resultado es
una aplicación en la que puedes razonar sobre las tres capas con el mismo vocabulario.
┌─────────────────────────────── NAVEGADOR ───────────────────────────────┐
│ Angular │
│ ┌───────────┐ señales ┌───────────┐ HttpClient ┌───────────┐ │
│ │ Component │◄────────────►│ Service │───────────────►│Interceptor│ │
│ │ (vista) │ computed │ (estado) │ Observable │ (token) │ │
│ └───────────┘ └───────────┘ └─────┬─────┘ │
└──────────────────────────────────────────────────────────────┼─────────┘
HTTPS / JSON │
┌──────────────────────────────────────────────────────────────▼─────────┐
│ NestJS (Node.js) │
│ Middleware → Guard → Interceptor → Pipe → Controller → Service │
│ │ │
│ EntityManager │ (por req.) │
│ ┌─────────────────────────────────────────────────────────▼─────────┐ │
│ │ MikroORM: Identity Map + Unit of Work + Data Mapper │ │
│ │ entidades ↔ change tracking ↔ flush() ↔ SQL en transacción │ │
│ └─────────────────────────────────────────────────────────┬─────────┘ │
└────────────────────────────────────────────────────────────┼───────────┘
│ SQL
┌──────────▼──────────┐
│ PostgreSQL │
└─────────────────────┘
Cómo está estructurado cada capítulo
Todos los capítulos siguen la misma plantilla didáctica, adaptada al tema. No todos incluyen las 34 secciones (sería artificial), pero sí las que aportan valor:
Comprender
- Definición precisa
- Problema que resuelve
- Historia y contexto
- Analogías
- Arquitectura interna
- Flujo de funcionamiento
- Ciclo de vida
- Diagramas
Aplicar
- Instalación y configuración
- Sintaxis completa
- Ejemplo simple → intermedio → avanzado → producción
- Código incorrecto vs correcto
- Explicación línea por línea
- Casos de uso reales
Dominar
- Buenas y malas prácticas
- Errores comunes y su solución
- Rendimiento y seguridad
- Patrones y SOLID aplicados
- Comparativas con alternativas
- Preguntas frecuentes
- Ejercicios y retos
defineConfig y
EntityManager por petición. El ecosistema publica versiones mayores con frecuencia
(Angular, cada ~6 meses), así que contrasta siempre los detalles de API con la documentación oficial de
la versión exacta que utilices. Los conceptos (DI, change detection, Unit of Work, N+1) son
estables desde hace años y son los que de verdad se evalúan.
Índice del libro
Parte I · Fundamentos
Parte II · Angular
Arquitectura, CLI y estructura del proyecto
Historia de Angular, arquitectura interna (Ivy, compilador, zonas), instalación, CLI completo, estructura de carpetas, archivos de configuración y estrategia de organización por features.
Componentes, directivas, pipes e inyección de dependencias
El bloque básico de construcción: metadatos, ciclo de vida completo, comunicación, proyección de contenido, encapsulación de estilos, directivas propias, pipes y el contenedor de DI jerárquico.
Reactividad: Signals, RxJS y Change Detection
El corazón del Angular moderno. Cómo funciona el grafo reactivo por dentro, cuándo usar señales y cuándo observables, qué hacía Zone.js y qué significa realmente el modo zoneless.
Plantillas, control flow y formularios
Sintaxis completa de plantillas, bloques @if/@for/@switch/@defer, formularios reactivos
tipados, validación síncrona y asíncrona, y componentes de formulario reutilizables.
Router, lazy loading, HTTP y gestión de estado
Navegación completa, guards y resolvers funcionales, carga diferida, HttpClient con interceptores, y una comparativa honesta de las opciones de gestión de estado.
Rendering: CSR, SSR, hidratación y rendimiento
Qué ocurre exactamente entre la petición del navegador y el primer píxel, y cómo optimizar cada fase: prerender, SSR, hidratación incremental, Core Web Vitals y presupuesto de bundle.
Testing, debugging y calidad
Pirámide de tests aplicada a Angular, TestBed, dobles de prueba, testing de señales y observables, e2e con Playwright, y herramientas de depuración y perfilado.
Parte III · NestJS
Arquitectura, módulos e inyección de dependencias
Cómo funciona Nest por dentro: el contenedor IoC, la resolución de dependencias, los scopes, los módulos dinámicos, la configuración tipada y el ciclo de vida de la aplicación.
El ciclo de petición completo
Middleware, guards, interceptores, pipes, controladores y filtros de excepción: qué hace cada uno, en qué orden se ejecutan, cómo se combinan y cómo construir los tuyos.
Nest avanzado: caché, colas, tiempo real y microservicios
Todo lo que va más allá del CRUD: caché con Redis, colas BullMQ, tareas programadas, WebSockets, SSE, GraphQL, microservicios con distintos transportes, CQRS y eventos de dominio.
Seguridad: autenticación, JWT, OAuth2 y autorización
Del hash de contraseñas al flujo OAuth2 completo, con implementación de refresh tokens rotativos, RBAC/ABAC, CASL, protección OWASP y decisiones de almacenamiento de tokens en el cliente.
Testing, logging y observabilidad
Tests unitarios, de integración y e2e con base de datos real; logging estructurado, correlación de peticiones, métricas, trazas distribuidas y health checks.
Parte IV · MikroORM
Data Mapper, Identity Map y Unit of Work
Los tres patrones que definen MikroORM, explicados desde su origen en el libro de Martin Fowler
hasta su implementación concreta: change tracking, estados de entidad y anatomía de un flush().
Entidades, relaciones, herencia y embeddables
Modelado completo: los cuatro tipos de relación, lado propietario, colecciones y referencias, cascadas, orphan removal, herencia (STI) y value objects embebidos.
Consultas, QueryBuilder, paginación y el problema N+1
Desde em.find() hasta SQL nativo, pasando por el QueryBuilder, las estrategias de
carga, la paginación por cursor y el diagnóstico de consultas lentas.
Transacciones, migraciones, filtros y rendimiento
Control transaccional completo, bloqueos optimista y pesimista, migraciones seguras en producción, seeders, filtros globales, soft delete, caché y optimización.
Parte V · Integración
Integración full-stack de principio a fin
Un caso de uso recorrido completo: del clic en Angular al COMMIT en PostgreSQL, con contratos compartidos, manejo de errores coherente, subida de archivos, tiempo real y despliegue conjunto.
SQL, modelado de datos e índices
Lo que un ORM no te ahorra: álgebra relacional práctica, normalización, joins, funciones de ventana, planes de ejecución, índices, transacciones ACID y concurrencia.
Parte VI · Ingeniería
Arquitectura, SOLID, patrones y Clean Code
Diseño de software aplicado a este stack: capas, hexagonal, DDD táctico, los cinco principios SOLID con ejemplos reales, patrones GoF útiles y reglas de código limpio.
Docker, CI/CD, despliegue y escalabilidad
Del Dockerfile multi-stage al pipeline completo: entornos, secretos, migraciones en
despliegue, estrategias de release, escalado horizontal y monitorización.
Parte VII · Práctica
Ejercicios, retos y proyecto integrador
Más de 60 ejercicios graduados con solución comentada y la especificación completa del proyecto integrador que reúne todo el temario, dividido en 10 hitos evaluables.
Banco de preguntas de entrevista y examen
Más de 150 preguntas con respuesta modelo, organizadas por nivel (junior, mid, senior) y por tema, incluidas preguntas de diseño de sistemas y de código en vivo.
Checklist interactivo de repaso
El temario completo en 368 puntos marcables con progreso persistente, más 60 preguntas rápidas de autoevaluación. Úsalo en la última semana antes del examen.
Proyecto TaskFlow
Herramientas de estudio
Flashcards
65 tarjetas activas con volteo, barajar y aciertos persistentes en el navegador.
Índice alfabético
Glosario de términos del libro con enlace al capítulo correspondiente.
Mapa de capítulos
Prerrequisitos y rutas de estudio (frontend, backend, full-stack, producción).
Modo examen
20 preguntas tipo test con cronómetro 15/30/45 min dentro del checklist.
Parte VIII · Ampliaciones
Interfaz: Material, CDK, estilos y animaciones
Tokens de diseño, temas, Angular Material y CDK, Tailwind con aislamiento de estilos, animaciones accesibles y componentes de UI propios para TaskFlow.
Diseño de API: HTTP, REST, OpenAPI y contratos
Semántica de métodos y códigos, paginación, Problem Details, caché e ETag, idempotencia, versionado y OpenAPI como contrato entre Nest y Angular.
Accesibilidad: WCAG, teclado, ARIA y pruebas
Árbol de accesibilidad, HTML semántico, foco en SPA, formularios usables con lector de pantalla y puertas de calidad con axe en CI.
PWA, offline y notificaciones push
Service workers, estrategias de caché, IndexedDB, cola de escrituras, conflictos e integración push VAPID con NestJS.
Node.js en producción
Bucle de eventos, bloqueos, streams, memoria, worker threads, pool de BD, apagado ordenado y perfilado con evidencia.
Internacionalización, formatos y zonas horarias
i18n en Angular, Intl, UTC frente a zona local, timestamptz y los bugs
clásicos de fechas en full-stack.
Monorepos con Nx
Apps y libs, boundaries, affected, caché y CI para mantener Angular y Nest en un solo workspace.
Actualizar y migrar proyectos heredados
Estrategias de actualización de Angular, Nest y MikroORM, strangler fig, expand/contract y checklists de release seguros.
Plan de estudio
Tres rutas según el tiempo disponible. Todas terminan con el proyecto integrador del capítulo 22, porque es lo único que convierte el conocimiento pasivo en habilidad demostrable.
| Día | Capítulos | Práctica obligatoria |
|---|---|---|
| 1 | Cap. 1 completo | 10 katas de TypeScript del cap. 22 |
| 2 | Cap. 2 y 3 | Crear proyecto y 3 componentes con comunicación |
| 3 | Cap. 4 | Store con señales + buscador con RxJS |
| 4 | Cap. 5 | Formulario reactivo con validación cruzada y CVA |
| 5 | Cap. 6 | Rutas protegidas, lazy loading e interceptor de auth |
| 6 | Cap. 7 y 8 | Optimizar bundle + 5 tests de componente |
| 7 | Repaso Angular | Hito 1–3 del proyecto integrador |
| 8 | Cap. 9 | API Nest con 3 módulos y configuración validada |
| 9 | Cap. 10 | DTOs, guard, interceptor y filtro global propios |
| 10 | Cap. 14 | Entidades y primer CRUD con EntityManager |
| 11 | Cap. 15 | Modelo completo con las 4 cardinalidades |
| 12 | Cap. 16 | Listado con filtros, paginación y sin N+1 |
| 13 | Cap. 17 y 18 | Transacciones + migraciones + conectar Angular |
| 14 | Repaso backend | Hito 4–6 del proyecto |
| 15 | Cap. 12 | Login con JWT y refresh rotativo funcionando |
| 16 | Cap. 19 | EXPLAIN de tus 3 consultas más lentas + índices |
| 17 | Cap. 13 | Suite de tests unitarios y un e2e |
| 18 | Cap. 20 | Refactorizar el proyecto a capas limpias |
| 19 | Cap. 21 | Docker Compose + pipeline de CI |
| 20 | Cap. 11 | Caché, cola y WebSocket en el proyecto |
| 21 | Cap. 23 + checklist | Simulacro completo de entrevista en voz alta |
| Semana | Capítulos | Entregable al final de la semana |
|---|---|---|
| 1 | 1, 2, 3 | App Angular con componentes propios y DI bien usada |
| 2 | 4, 5, 6, 7, 8 | Frontend completo con estado, formularios, rutas y tests |
| 3 | 9, 10, 12, 13 | API Nest con validación, auth JWT y tests |
| 4 | 14, 15, 16, 17, 18, 19 | Persistencia real con PostgreSQL y frontend conectado |
| Extra | 11, 20, 21, 22, 23 | Docker, CI y simulacro de entrevista |
Si solo dispones de 4 semanas naturales, deja los capítulos 11, 20 y 21 como lectura de fin de semana: son importantes para el criterio profesional, pero menos frecuentes en una evaluación de nivel medio.
| Mes | Foco | Objetivo de nivel |
|---|---|---|
| 1 | Cap. 1–8 con todos los ejercicios y los ejemplos avanzados | Escribir Angular idiomático moderno sin consultar documentación básica |
| 2 | Cap. 9–17 más el capítulo 19 de SQL en paralelo | Diseñar y construir una API de producción con persistencia correcta |
| 3 | Cap. 18, 20, 21 y el proyecto integrador completo con despliegue | Defender decisiones de arquitectura y rendimiento en una entrevista senior |
1. Lectura activa (40 %). Lee con el editor abierto. Cada vez que aparezca un bloque de código, escríbelo a mano (sin copiar y pegar) y ejecútalo. Si algo no compila, arréglalo antes de seguir.
2. Recuerdo activo (30 %). Al terminar cada sección, cierra el libro y explica en voz alta qué acabas de leer. Lo que no puedas explicar, reléelo.
3. Aplicación (30 %). Haz los ejercicios del capítulo y añade la funcionalidad correspondiente al proyecto integrador.
Repaso espaciado: vuelve a las «preguntas frecuentes» del capítulo a los 3, 7 y 21 días.
Requisitos previos y entorno de trabajo
Antes del capítulo 1, deja el entorno listo. Perder dos horas configurando en mitad del estudio rompe el ritmo.
# Node.js LTS (22.x o superior recomendado en 2026)
node --version
npm --version
# Angular CLI de forma global (o usa npx para no ensuciar el sistema)
npm install -g @angular/cli
ng version
# Nest CLI
npm install -g @nestjs/cli
nest --version
# PostgreSQL en Docker: la base de datos que usaremos en todo el libro
docker run -d --name pg-libro \
-e POSTGRES_PASSWORD=devpass \
-e POSTGRES_USER=dev \
-e POSTGRES_DB=taskflow \
-p 5432:5432 \
postgres:16-alpine
# Comprobar que responde
docker exec -it pg-libro psql -U dev -d taskflow -c "SELECT version();"
- Editor: VS Code o Cursor con las extensiones de Angular Language Service, ESLint y Prettier.
- Conocimientos previos: HTML y CSS a nivel funcional, y programación básica en cualquier lenguaje. Todo lo demás (JavaScript moderno incluido) se cubre en el capítulo 1.
- Cliente HTTP: Postman, Insomnia o la extensión REST Client para probar la API.
- Cliente de base de datos: DBeaver, TablePlus o
psqlpara inspeccionar el esquema y ejecutarEXPLAIN ANALYZE.
Glosario rápido de siglas
| Sigla | Significado | Dónde aparece |
|---|---|---|
| DI / IoC | Inyección de dependencias / Inversión de control | Angular, NestJS (cap. 3 y 9) |
| CD | Change Detection (detección de cambios) | Angular (cap. 4) |
| CSR / SSR / SSG | Renderizado en cliente / servidor / estático | Angular (cap. 7) |
| DTO | Data Transfer Object | NestJS (cap. 10) |
| UoW | Unit of Work | MikroORM (cap. 14) |
| ORM | Object-Relational Mapping | MikroORM (cap. 14–17) |
| RBAC / ABAC | Control de acceso por roles / por atributos | NestJS (cap. 12) |
| CQRS | Command Query Responsibility Segregation | NestJS (cap. 11), arquitectura (cap. 20) |
| DDD | Domain-Driven Design | Arquitectura (cap. 20) |
| ACID | Atomicidad, Consistencia, Aislamiento, Durabilidad | SQL (cap. 19) |
| N+1 | Antipatrón de consultas en bucle | MikroORM (cap. 16) |
| LCP / INP / CLS | Core Web Vitals | Angular (cap. 7) |
Empezar
Si vas con prisa y ya sabes programar, empieza por el capítulo que necesites: cada uno es razonablemente autónomo y enlaza a los conceptos que da por sabidos. Si quieres el recorrido completo, empieza por el principio.
Comenzar por el capítulo 1 → Ir directo a NestJS Ir directo a MikroORM Abrir el checklist de repaso