Manual técnico completo · Edición 2026

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.

23 capítulos 7 partes Cientos de ejemplos con código correcto e incorrecto Diagramas, ejercicios y banco de preguntas
Tu progreso0 capítulos leídos

Se guarda en este navegador. Marca cada capítulo con el botón «Marcar como leído» de su barra superior.

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
Convenciones tipográficas Los bloques de código llevan una cabecera con el nombre de archivo y, cuando procede, una etiqueta INCORRECTO o CORRECTO. Las etiquetas CORE marcan lo imprescindible, MODERNO lo que distingue a quien está al día y AVANZADO lo que no es necesario para empezar pero sí para destacar.
Nota sobre versiones El libro cubre el modelo moderno del stack: Angular con componentes standalone, señales y control flow nativo; NestJS 10/11 con Express o Fastify; MikroORM 6 con 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

CAPÍTULO 2

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.

AngularJS → Angular · Ivy · CLI · schematics · angular.json · budgets · standalone · bootstrapApplication · monorepo · builders
CAPÍTULO 3

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.

@Component · input()/output() · ciclo de vida · ng-content · ViewEncapsulation · hostDirectives · pipes puros · InjectionToken · inyectores jerárquicos
CAPÍTULO 4

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.

signal · computed · effect · linkedSignal · resource · RxJS · operadores de aplanado · Zone.js · OnPush · zoneless · fugas de memoria
CAPÍTULO 5

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.

binding · @for/track · @defer · ng-template · FormGroup tipado · validadores · ControlValueAccessor · accesibilidad · errores del servidor
CAPÍTULO 6

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.

Routes · canMatch vs canActivate · resolvers · preloading · HttpClient · interceptores · reintentos · caché · NgRx · SignalStore
CAPÍTULO 7

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.

CSR · SSR · SSG · hidratación · TransferState · Core Web Vitals · NgOptimizedImage · virtual scroll · análisis de bundle · i18n
CAPÍTULO 8

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.

TestBed · HttpTestingController · fakeAsync · harnesses · Playwright · DevTools · profiler · ESLint · cobertura útil

Parte III · NestJS

CAPÍTULO 9

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.

IoC · providers · tokens · scopes · módulos dinámicos · ConfigModule · lifecycle hooks · Express vs Fastify · estructura de proyecto · Swagger
CAPÍTULO 10

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.

orden de ejecución · ValidationPipe · class-validator · DTOs · Reflector · metadatos · RxJS en interceptores · errores normalizados · serialización
CAPÍTULO 11

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.

cache-manager · BullMQ · @Cron · Throttler · WebSockets · SSE · GraphQL · TCP/Redis/RabbitMQ/Kafka · CQRS · monorepo
CAPÍTULO 12

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.

bcrypt/argon2 · JWT · refresh rotativo · Passport · guards de roles · CASL · OAuth2/OIDC · CORS · CSRF · helmet · rate limiting
CAPÍTULO 13

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.

Test.createTestingModule · mocks · Supertest · Testcontainers · Pino · correlation id · OpenTelemetry · Terminus · métricas

Parte IV · MikroORM

CAPÍTULO 14

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().

Data Mapper vs Active Record · Identity Map · Unit of Work · em.fork() · RequestContext · configuración · drivers · CLI · entidades
CAPÍTULO 15

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.

@ManyToOne · @OneToMany · @ManyToMany · @OneToOne · Collection · Reference · cascade · orphanRemoval · STI · @Embedded · tipos personalizados
CAPÍTULO 16

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.

operadores · populate · LoadStrategy · QueryBuilder · agregados · subconsultas · findAndCount · keyset pagination · serialización · N+1
CAPÍTULO 17

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.

em.transactional · aislamiento · @Property(version) · LockMode · migraciones · seeders · @Filter · soft delete · subscribers · batch

Parte V · Integración

Parte VI · Ingeniería

Parte VII · Práctica

Proyecto TaskFlow

Herramientas de estudio

Parte VIII · Ampliaciones

CAPÍTULO 24

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.

tokens · Material · CDK · overlay · virtual scroll · Tailwind · animaciones · Storybook
CAPÍTULO 25

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.

PUT/PATCH · 401/403 · cursor · RFC 9457 · ETag · Idempotency-Key · OpenAPI
CAPÍTULO 26

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.

WCAG AA · ARIA · FocusTrap · LiveAnnouncer · contraste · axe
CAPÍTULO 27

PWA, offline y notificaciones push

Service workers, estrategias de caché, IndexedDB, cola de escrituras, conflictos e integración push VAPID con NestJS.

ngsw · Cache Storage · idb · sync · Web Push · SwUpdate
CAPÍTULO 28

Node.js en producción

Bucle de eventos, bloqueos, streams, memoria, worker threads, pool de BD, apagado ordenado y perfilado con evidencia.

event loop · streams · heap · workers · pool · SIGTERM · flamegraph
CAPÍTULO 29

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.

localize · ICU · Intl · UTC · timestamptz · DST · RTL
CAPÍTULO 30

Monorepos con Nx

Apps y libs, boundaries, affected, caché y CI para mantener Angular y Nest en un solo workspace.

Nx · tags · affected · remote cache · Module Federation
CAPÍTULO 31

Actualizar y migrar proyectos heredados

Estrategias de actualización de Angular, Nest y MikroORM, strangler fig, expand/contract y checklists de release seguros.

ng update · standalone · zoneless · MikroORM 6 · zero-downtime

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íaCapítulosPráctica obligatoria
1Cap. 1 completo10 katas de TypeScript del cap. 22
2Cap. 2 y 3Crear proyecto y 3 componentes con comunicación
3Cap. 4Store con señales + buscador con RxJS
4Cap. 5Formulario reactivo con validación cruzada y CVA
5Cap. 6Rutas protegidas, lazy loading e interceptor de auth
6Cap. 7 y 8Optimizar bundle + 5 tests de componente
7Repaso AngularHito 1–3 del proyecto integrador
8Cap. 9API Nest con 3 módulos y configuración validada
9Cap. 10DTOs, guard, interceptor y filtro global propios
10Cap. 14Entidades y primer CRUD con EntityManager
11Cap. 15Modelo completo con las 4 cardinalidades
12Cap. 16Listado con filtros, paginación y sin N+1
13Cap. 17 y 18Transacciones + migraciones + conectar Angular
14Repaso backendHito 4–6 del proyecto
15Cap. 12Login con JWT y refresh rotativo funcionando
16Cap. 19EXPLAIN de tus 3 consultas más lentas + índices
17Cap. 13Suite de tests unitarios y un e2e
18Cap. 20Refactorizar el proyecto a capas limpias
19Cap. 21Docker Compose + pipeline de CI
20Cap. 11Caché, cola y WebSocket en el proyecto
21Cap. 23 + checklistSimulacro completo de entrevista en voz alta
SemanaCapítulosEntregable al final de la semana
11, 2, 3App Angular con componentes propios y DI bien usada
24, 5, 6, 7, 8Frontend completo con estado, formularios, rutas y tests
39, 10, 12, 13API Nest con validación, auth JWT y tests
414, 15, 16, 17, 18, 19Persistencia real con PostgreSQL y frontend conectado
Extra11, 20, 21, 22, 23Docker, 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.

MesFocoObjetivo de nivel
1Cap. 1–8 con todos los ejercicios y los ejemplos avanzados Escribir Angular idiomático moderno sin consultar documentación básica
2Cap. 9–17 más el capítulo 19 de SQL en paralelo Diseñar y construir una API de producción con persistencia correcta
3Cap. 18, 20, 21 y el proyecto integrador completo con despliegue Defender decisiones de arquitectura y rendimiento en una entrevista senior
Cómo estudiar cada capítulo (método probado)

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.

terminal · comprobación del entorno
# 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();"

Glosario rápido de siglas

SiglaSignificadoDónde aparece
DI / IoCInyección de dependencias / Inversión de controlAngular, NestJS (cap. 3 y 9)
CDChange Detection (detección de cambios)Angular (cap. 4)
CSR / SSR / SSGRenderizado en cliente / servidor / estáticoAngular (cap. 7)
DTOData Transfer ObjectNestJS (cap. 10)
UoWUnit of WorkMikroORM (cap. 14)
ORMObject-Relational MappingMikroORM (cap. 14–17)
RBAC / ABACControl de acceso por roles / por atributosNestJS (cap. 12)
CQRSCommand Query Responsibility SegregationNestJS (cap. 11), arquitectura (cap. 20)
DDDDomain-Driven DesignArquitectura (cap. 20)
ACIDAtomicidad, Consistencia, Aislamiento, DurabilidadSQL (cap. 19)
N+1Antipatrón de consultas en bucleMikroORM (cap. 16)
LCP / INP / CLSCore Web VitalsAngular (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