### **Curso de NestJS: Desarrollo Backend Modular y Escalable** #### **Módulo 1: Introducción a NestJS y Fundamentos** - **1.1. ¿Qué es NestJS?** - Historia y evolución de NestJS. - Arquitectura modular de NestJS. - Comparativa con otros frameworks (Express, Fastify). - **1.2. Instalación y configuración del entorno** - Requisitos previos (Node.js, npm/yarn). - Creación de un proyecto NestJS desde cero. - Estructura del proyecto. #### **Módulo 2: Controladores y Rutas** - **2.1. Introducción a los controladores (Controllers)** - Creación de controladores. - Definición de rutas con decoradores (@Get, @Post, @Put, @Delete). - **2.2. Parámetros en las rutas** - Parámetros de ruta, consulta y cuerpo. - Validación de entradas con Pipes. #### **Módulo 3: Servicios y Dependencias** - **3.1. Servicios en NestJS (Providers)** - Creación de servicios. - Inyección de dependencias en NestJS. - Uso del patrón de diseño Singleton. - **3.2. Ciclo de vida de los servicios** - Iniciación y destrucción de servicios. #### **Módulo 4: Módulos en NestJS** - **4.1. Concepto de módulos en NestJS** - Modularización del código. - Creación y gestión de módulos. - Importar y exportar módulos. - **4.2. Organización de un proyecto grande** - División del proyecto en módulos. - Creación de módulos compartidos (Shared Modules). #### **Módulo 5: Bases de Datos y ORM** - **5.1. Conexión a bases de datos con TypeORM** - Configuración de TypeORM en NestJS. - Definición de entidades y migraciones. - **5.2. Servicios de repositorio** - Creación de servicios CRUD. - Query Builder y consultas avanzadas. - **5.3. Uso de Mongoose para bases de datos NoSQL** - Integración con MongoDB y Mongoose. #### **Módulo 6: Autenticación y Autorización** - **6.1. Autenticación con JWT (JSON Web Tokens)** - Implementación de autenticación con JWT. - Estrategias de autenticación. - **6.2. Autorización basada en roles (Role-based Access Control - RBAC)** - Protección de rutas. - Uso de guards y decoradores personalizados. #### **Módulo 7: Validación, Interceptores y Guards** - **7.1. Validación de datos** - Uso de `class-validator` y `class-transformer`. - Pipes y validaciones personalizadas. - **7.2. Interceptores y filtros** - Manejo de excepciones y respuestas personalizadas. - Creación de interceptores. - **7.3. Guards y manejo de permisos** - Implementación de guards para la seguridad de rutas. #### **Módulo 8: Arquitectura de Microservicios en NestJS** - **8.1. Fundamentos de microservicios** - Introducción a la arquitectura de microservicios. - Comparativa con monolitos. - Ventajas y desafíos de los microservicios. - **8.2. Comunicación entre microservicios** - Protocolo HTTP, gRPC, y WebSockets. - Comunicación asíncrona con colas de mensajes (RabbitMQ, Kafka). - Protocolos de transporte soportados por NestJS (TCP, Redis, NATS, MQTT). - **8.3. Implementación de un microservicio en NestJS** - Creación de un microservicio independiente. - Definición de eventos y handlers para microservicios. - **8.4. Gateway API para microservicios** - Uso de un API Gateway para orquestación. - Patrón de API Gateway en NestJS. - **8.5. Gestión de fallos y resiliencia** - Implementación de patrones de resiliencia (circuit breakers, retries). - Mecanismos de recuperación y manejo de errores en microservicios. - **8.6. Balanceo de carga y descubrimiento de servicios** - Descubrimiento de servicios en entornos distribuidos. - Balanceo de carga para microservicios. #### **Módulo 9: GraphQL en NestJS** - **9.1. Introducción a GraphQL** - Fundamentos de GraphQL. - Diferencias con REST. - **9.2. Configuración de GraphQL en NestJS** - Instalación y configuración de Apollo Server. - Creación de queries y mutaciones. #### **Módulo 10: WebSockets y Real-time Applications** - **10.1. Introducción a WebSockets en NestJS** - Configuración de WebSockets. - Creación de eventos y escuchas. - **10.2. Gateway y manejo de eventos** - Uso del módulo `@WebSocketGateway`. - Comunicación bidireccional en tiempo real. #### **Módulo 11: Testing en NestJS** - **11.1. Pruebas unitarias** - Configuración del entorno de pruebas con Jest. - Pruebas de controladores y servicios. - **11.2. Pruebas de integración y End-to-End** - Pruebas e2e con Supertest. - Pruebas con bases de datos en memoria. #### **Módulo 12: Deploy y Optimización** - **12.1. Preparación para producción** - Configuración de variables de entorno. - Gestión de errores y seguridad en producción. - **12.2. Despliegue en plataformas Cloud** - Deploy en Heroku, AWS, y Azure. - Dockerización de aplicaciones NestJS. #### **Módulo 13: Buenas Prácticas y Patrones de Diseño** - **13.1. Arquitectura limpia y DDD (Domain Driven Design)** - Estructuración de proyectos grandes. - Implementación de principios SOLID. - **13.2. Patrones de diseño aplicados a NestJS** - Factory, Repository, y Singleton. #### **Módulo 14: Integraciones Avanzadas** - **14.1. Integración con RabbitMQ y Microservicios** - Configuración de microservicios en NestJS. - Uso de RabbitMQ para la mensajería. - **14.2. Integración con Redis** - Caché y cola de mensajes con Redis.