Descripción del curso
Este curso brinda una formación integral para diseñar, desarrollar, probar y desplegar aplicaciones web modernas utilizando tecnologías JavaScript tanto en el front-end como en el back-end.
Las personas participantes aprenderán a construir aplicaciones completas, seguras, escalables y mantenibles, integrando interfaces dinámicas, APIs RESTful, bases de datos SQL y NoSQL, autenticación, pruebas automatizadas y procesos básicos de despliegue en la nube.
Duración: 36 horas, distribuidas en 9 sesiones de cuatro horas.
Fecha: 21-22-23-24-25-28-29-30 de set y 1 de oct de 8:00 am a 12:00 pm
Modalidad: Virtual en vivo, con acompañamiento del instructor, demostraciones, prácticas guiadas y laboratorios.
Objetivo general
Desarrollar las competencias necesarias para diseñar, construir, integrar, probar y desplegar aplicaciones Full Stack modernas, aplicando buenas prácticas de arquitectura, seguridad, rendimiento, calidad de software y administración del ciclo de vida de una aplicación web.
Objetivos específicos
Al finalizar el curso, las personas participantes estarán en capacidad de:
- Comprender la arquitectura y los componentes de una aplicación Full Stack moderna.
- Diseñar interfaces web dinámicas mediante frameworks modernos de front-end.
- Construir APIs RESTful utilizando Node.js.
- Implementar mecanismos seguros de autenticación y autorización.
- Integrar aplicaciones con bases de datos SQL y NoSQL.
- Aplicar técnicas de validación, manejo de errores y protección de datos.
- Desarrollar pruebas unitarias y de integración.
- Utilizar Git como herramienta de control de versiones.
- Preparar y desplegar aplicaciones en servidores o plataformas cloud.
- Implementar mecanismos básicos de monitoreo, registro y diagnóstico.
Dirigido a
- Desarrolladores de software.
- Programadores web.
- Profesionales de tecnologías de información.
- Analistas de sistemas.
- Personal técnico responsable del desarrollo o mantenimiento de aplicaciones.
- Personas con conocimientos de programación interesadas en evolucionar hacia el desarrollo Full Stack.
Prerrequisitos recomendados
- Conocimientos básicos de programación.
- Manejo básico de HTML, CSS y JavaScript.
- Comprensión general de bases de datos.
- Familiaridad con comandos básicos de terminal.
- Conocimientos introductorios sobre desarrollo web y protocolo HTTP.
Experiencia laboral recomendada
Se recomienda contar con experiencia básica en programación o participación previa en proyectos de desarrollo de software. No es indispensable haber trabajado anteriormente como desarrollador Full Stack.
Metodología
El curso tendrá un enfoque práctico, progresivo e interactivo. Cada tema será abordado mediante:
- Explicaciones conceptuales.
- Demostraciones realizadas por el instructor.
- Ejercicios prácticos.
- Laboratorios guiados.
- Análisis de arquitecturas y casos reales.
- Resolución de problemas frecuentes.
- Aplicación de buenas prácticas de desarrollo.
- Desarrollo progresivo de una aplicación Full Stack.
- Proyecto final integrador.
Contenido temático
Módulo 1. Arquitectura Full Stack moderna
1.1 Fundamentos del desarrollo Full Stack
- Concepto y alcance del desarrollo Full Stack.
- Componentes principales de una aplicación web moderna.
- Responsabilidades del front-end, back-end y capa de datos.
- Flujo de información entre navegador, servidor y base de datos.
- Aplicaciones monolíticas, modulares, distribuidas y basadas en servicios.
- Ventajas y desafíos de las arquitecturas modernas.
1.2 Arquitecturas cliente-servidor
- Funcionamiento del modelo cliente-servidor.
- Solicitudes y respuestas HTTP.
- Métodos HTTP: GET, POST, PUT, PATCH y DELETE.
- Encabezados, parámetros, cuerpo de la solicitud y códigos de estado.
- Comunicación síncrona y asíncrona.
- Separación de responsabilidades entre cliente y servidor.
- Aplicaciones renderizadas en el cliente y en el servidor.
- Introducción a SPA, SSR y aplicaciones híbridas.
1.3 Diseño de APIs RESTful
- Concepto de API y servicio web.
- Principios de la arquitectura REST.
- Diseño de recursos, rutas y endpoints.
- Uso correcto de métodos y códigos de estado HTTP.
- Parámetros de ruta, consulta y cuerpo.
- Paginación, ordenamiento y filtrado.
- Versionamiento de APIs.
- Convenciones para nombres y estructuras de respuesta.
- Diseño de respuestas consistentes.
- Manejo estructurado de errores.
- Introducción a la documentación con OpenAPI y Swagger.
1.4 Patrones de diseño para aplicaciones web
- Importancia de los patrones de diseño.
- Separación de responsabilidades.
- Arquitectura por capas.
- Patrón Modelo-Vista-Controlador.
- Repository Pattern.
- Service Layer.
- Dependency Injection.
- Componentización y reutilización.
- Principios SOLID aplicados al desarrollo web.
- Selección de patrones según el tamaño y complejidad del proyecto.
1.5 Organización y estructuración de proyectos
- Organización de carpetas y módulos.
- Separación de componentes, servicios, controladores y modelos.
- Archivos de configuración.
- Administración de dependencias.
- Convenciones de nombres.
- Código reutilizable y mantenible.
- Configuración de herramientas de calidad.
- Documentación técnica del proyecto.
- Preparación de una estructura escalable.
Módulo 2. Desarrollo front-end avanzado
2.1 Arquitectura de una aplicación SPA
- Funcionamiento de una Single Page Application.
- Componentes, vistas y servicios.
- Ciclo de vida de los componentes.
- Propiedades, eventos y comunicación entre componentes.
- Componentes reutilizables.
- Composición frente a herencia.
- Separación entre lógica, presentación y acceso a datos.
2.2 Gestión avanzada del estado
- Estado local y estado global.
- Flujo de datos dentro de la aplicación.
- Administración del estado compartido.
- Contextos, stores y gestores de estado.
- Acciones, reductores y selectores.
- Inmutabilidad y actualización predecible.
- Persistencia del estado.
- Sincronización con almacenamiento local.
- Manejo del estado proveniente del servidor.
- Estrategias para evitar estados duplicados o inconsistentes.
2.3 Manejo de rutas
- Configuración de rutas públicas y privadas.
- Rutas dinámicas y parámetros.
- Rutas anidadas.
- Navegación programática.
- Carga diferida de vistas.
- Manejo de páginas no encontradas.
- Conservación del estado durante la navegación.
- Protección de rutas según permisos y roles.
2.4 Autenticación desde el front-end
- Formularios de ingreso y cierre de sesión.
- Administración segura de sesiones.
- Manejo de tokens de acceso y actualización.
- Interceptores de solicitudes.
- Renovación de credenciales.
- Control de acceso basado en roles.
- Protección de componentes y funcionalidades.
- Riesgos del almacenamiento inseguro de tokens.
- Manejo de expiración y sesiones no autorizadas.
2.5 Consumo eficiente de APIs
- Solicitudes HTTP asíncronas.
- Uso de Fetch, Axios o herramientas equivalentes.
- Manejo de estados de carga, éxito y error.
- Cancelación de solicitudes.
- Reintentos y control de tiempo de espera.
- Consultas, paginación y filtros.
- Caché de información.
- Prevención de solicitudes duplicadas.
- Debounce y throttle.
- Manejo de formularios y envío de datos.
- Validación de respuestas.
2.6 Optimización del rendimiento
- Identificación de renderizados innecesarios.
- Memoización de valores y componentes.
- Lazy loading y división del código.
- Optimización de listas extensas.
- Optimización de imágenes y recursos.
- Reducción del tamaño de los bundles.
- Caché en el navegador.
- Análisis del rendimiento con herramientas del navegador.
- Introducción a Core Web Vitals.
- Estrategias para mejorar la experiencia del usuario.
Módulo 3. Desarrollo back-end con Node.js
3.1 Fundamentos de Node.js
- Arquitectura y funcionamiento de Node.js.
- Event Loop.
- Operaciones asíncronas.
- Promesas y async/await.
- Administración de paquetes con npm.
- Módulos y reutilización de código.
- Manejo de archivos y procesos.
- Configuración inicial de un proyecto.
3.2 Creación de APIs con Express
- Configuración de un servidor web.
- Creación de rutas y controladores.
- Parámetros de ruta y consulta.
- Procesamiento del cuerpo de solicitudes.
- Construcción de operaciones CRUD.
- Separación entre rutas, controladores y servicios.
- Estructuración modular de la API.
- Validación y transformación de datos.
- Respuestas HTTP consistentes.
- Documentación de endpoints.
3.3 Middleware
- Concepto y funcionamiento del middleware.
- Middleware global y específico.
- Creación de middleware personalizado.
- Validación de solicitudes.
- Registro de actividad.
- Control de autenticación.
- Manejo de archivos.
- Limitación de solicitudes.
- Configuración de CORS.
- Orden de ejecución de los middleware.
3.4 Manejo centralizado de errores
- Errores operativos y errores de programación.
- Captura de errores síncronos y asíncronos.
- Clases de errores personalizadas.
- Middleware centralizado de errores.
- Mensajes para desarrollo y producción.
- Registro de errores.
- Ocultamiento de información sensible.
- Respuestas de error estandarizadas.
3.5 Autenticación y autorización
- Diferencia entre autenticación y autorización.
- Registro e inicio de sesión.
- Protección de contraseñas mediante hashing.
- Uso de JWT.
- Tokens de acceso y actualización.
- Expiración y revocación de sesiones.
- Autorización basada en roles y permisos.
- Protección de endpoints.
- Introducción a OAuth 2.0 y OpenID Connect.
- Integración con proveedores externos de identidad.
3.6 Seguridad en aplicaciones Node.js
- Principales riesgos de seguridad en aplicaciones web.
- Validación y sanitización de entradas.
- Prevención de inyección SQL y NoSQL.
- Protección contra XSS y CSRF.
- Configuración segura de CORS.
- Encabezados HTTP de seguridad.
- Limitación de solicitudes y ataques de fuerza bruta.
- Protección de secretos y credenciales.
- Administración segura de cookies.
- Actualización y auditoría de dependencias.
- Aplicación práctica de recomendaciones OWASP.
Módulo 4. Bases de datos e integración
4.1 Bases de datos SQL y NoSQL
- Diferencias entre modelos relacionales y documentales.
- Casos de uso de cada tecnología.
- Tablas, documentos, colecciones y registros.
- Claves primarias y foráneas.
- Índices y rendimiento.
- Transacciones y consistencia.
- Selección de la base de datos según el proyecto.
- Estrategias de integración con Node.js.
4.2 Modelado de datos
- Identificación de entidades y atributos.
- Relaciones uno a uno, uno a muchos y muchos a muchos.
- Normalización de bases de datos relacionales.
- Desnormalización en bases NoSQL.
- Integridad referencial.
- Restricciones y reglas de negocio.
- Modelado orientado a consultas.
- Diagramas entidad-relación.
- Diseño para escalabilidad y mantenimiento.
4.3 ORM y ODM
- Concepto y propósito de ORM y ODM.
- Configuración de la conexión.
- Definición de modelos y esquemas.
- Operaciones CRUD.
- Consultas, filtros y ordenamiento.
- Validaciones.
- Relaciones y carga de información asociada.
- Consultas avanzadas.
- Transacciones.
- Comparación entre consultas nativas y abstracciones ORM/ODM.
4.4 Migraciones y carga de datos
- Concepto de migración.
- Creación y ejecución de migraciones.
- Modificaciones controladas del esquema.
- Reversión de cambios.
- Datos iniciales y procesos de seeding.
- Consistencia entre ambientes.
- Control de versiones del esquema.
- Recomendaciones para migraciones en producción.
4.5 Integración entre API y base de datos
- Separación de la lógica de persistencia.
- Implementación de repositorios y servicios.
- Manejo de conexiones.
- Consultas eficientes.
- Prevención del problema N+1.
- Paginación desde la base de datos.
- Manejo de concurrencia.
- Transacciones para operaciones críticas.
- Control de errores y recuperación.
Módulo 5. Testing, calidad y control de versiones
5.1 Estrategia de pruebas
- Importancia de las pruebas automatizadas.
- Pirámide de pruebas.
- Pruebas unitarias, de integración y funcionales.
- Definición de casos de prueba.
- Cobertura y calidad de las pruebas.
- Organización de archivos de pruebas.
- Datos de prueba y aislamiento.
5.2 Pruebas unitarias
- Configuración de un framework de pruebas.
- Pruebas de funciones, servicios y componentes.
- Aserciones.
- Hooks de preparación y limpieza.
- Mocking, stubs y spies.
- Simulación de dependencias externas.
- Pruebas de casos exitosos y excepciones.
- Evaluación de cobertura.
5.3 Pruebas de integración
- Pruebas de endpoints.
- Simulación de solicitudes HTTP.
- Integración con bases de datos de prueba.
- Pruebas de autenticación y autorización.
- Validación de códigos y estructuras de respuesta.
- Preparación y eliminación de datos.
- Automatización de escenarios completos.
- Introducción a pruebas end-to-end.
5.4 Calidad del código
- Convenciones de codificación.
- Uso de linters y formateadores.
- Detección de código duplicado.
- Refactorización.
- Complejidad y mantenibilidad.
- Revisión de código.
- Documentación de funciones y componentes.
- Administración de deuda técnica.
5.5 Entornos de desarrollo y producción
- Diferencias entre entornos.
- Configuración por ambiente.
- Dependencias de desarrollo y producción.
- Bases de datos independientes.
- Datos simulados.
- Manejo seguro de configuraciones.
- Estrategias para reproducir errores.
- Preparación de aplicaciones para producción.
5.6 Versionamiento con Git
- Repositorios locales y remotos.
- Commits claros y consistentes.
- Creación y administración de ramas.
- Estrategias de branching.
- Integración de cambios.
- Resolución de conflictos.
- Pull requests y revisión de código.
- Uso de etiquetas y versiones.
- Versionamiento semántico.
- Buenas prácticas para archivos ignorados y datos sensibles.
Módulo 6. Despliegue y DevOps básico
6.1 Preparación de builds
- Construcción del front-end para producción.
- Transpilación y empaquetado.
- Minificación de archivos.
- Eliminación de código no utilizado.
- División de bundles.
- Optimización de recursos estáticos.
- Validación previa al despliegue.
- Integración del front-end con la API.
6.2 Variables de entorno y secretos
- Uso de archivos de configuración.
- Variables para desarrollo, pruebas y producción.
- Protección de claves, tokens y contraseñas.
- Exclusión de secretos del repositorio.
- Configuración de variables en plataformas cloud.
- Rotación básica de credenciales.
- Principio de mínimo privilegio.
6.3 Despliegue de aplicaciones
- Opciones de alojamiento para front-end y back-end.
- Despliegue en servidores tradicionales.
- Plataformas como servicio.
- Despliegue en entornos cloud.
- Configuración de dominios y certificados HTTPS.
- Integración con bases de datos administradas.
- Procesos de actualización.
- Rollback ante errores.
- Introducción a contenedores con Docker.
6.4 Integración y despliegue continuo
- Conceptos básicos de CI/CD.
- Automatización de pruebas.
- Validación de calidad antes del despliegue.
- Construcción automática de la aplicación.
- Pipelines básicos.
- Despliegue desde un repositorio.
- Administración de ambientes.
- Buenas prácticas para entregas frecuentes.
6.5 Monitoreo y manejo de logs
- Importancia de la observabilidad.
- Logs de aplicación, acceso y errores.
- Niveles de registro.
- Logs estructurados.
- Identificación de solicitudes.
- Monitoreo de disponibilidad y rendimiento.
- Métricas básicas de uso de recursos.
- Alertas ante errores.
- Manejo de excepciones en producción.
- Diagnóstico de incidentes.
- Buenas prácticas para evitar registrar información sensible.
Recursos y herramientas sugeridas
- Visual Studio Code.
- Git y GitHub.
- Node.js y npm.
- Express o framework equivalente.
- React, Angular o Vue.
- PostgreSQL, MySQL o SQL Server.
- MongoDB.
- ORM u ODM compatible.
- Postman o herramienta equivalente.
- Jest, Vitest o framework similar.
- OpenAPI y Swagger.
- Docker.
- Plataforma cloud para el despliegue.
Resultado esperado
Al finalizar el curso, cada participante contará con una aplicación Full Stack completa y desplegada, así como con una estructura de trabajo reutilizable para futuros proyectos, basada en criterios de seguridad, rendimiento, calidad, mantenibilidad y escalabilidad.