Sistema completo de gestión de planes de release con Portal Web, API REST e infraestructura de despliegue.
- Descripción General
- Características Principales
- Arquitectura del Sistema
- Inicio Rápido
- Estructura del Proyecto
- Documentación Completa
- Tecnologías
- Scripts Disponibles
- Git Flow Workflow
- Contribuir
Release Planner es un sistema completo para la gestión de planes de release, productos, features, calendarios y propietarios IT. El sistema está construido como un monorepo Nx que incluye:
- 🌐 Portal Web (
apps/portal): Aplicación React moderna con visualización tipo Gantt - 🔌 API REST (
apps/api): Backend NestJS siguiendo Clean Architecture - 📦 Librerías Compartidas (
libs/): Tipos, utilidades y módulos comunes
- ✅ Visualización Gantt Interactiva: Gestión visual de fases y tareas con drag & drop
- ✅ Gestión de Fases: Creación, edición y organización de fases de release
- ✅ Gestión de Productos: Administración completa de productos y componentes
- ✅ Calendarios: Soporte para múltiples calendarios y zonas horarias
- ✅ Autenticación y Seguridad: Sistema completo de autenticación con JWT
- ✅ Resiliencia: Circuit breakers, retries y manejo de errores robusto
- ✅ Monitoreo: Integración con Prometheus y Grafana
- Framework: React 19 + TypeScript
- Build Tool: Vite 7
- UI Framework: Material-UI (MUI) v7
- State Management: Redux Toolkit + TanStack Query
- Routing: React Router v6
- Styling: Material-UI
sxprop + Tailwind CSS
- Framework: NestJS 11
- ORM: TypeORM con PostgreSQL
- Validación: class-validator + class-transformer
- Autenticación: JWT + Guards
- Documentación: Swagger/OpenAPI
- Monorepo: Nx 22
- Containerización: Docker + Docker Compose
- Orquestación: Kubernetes (Helm Charts)
- CI/CD: GitHub Actions (configurable)
┌─────────────────────────────────────────────────────────────┐
│ Release Planner System │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────┐ ┌──────────────┐ │
│ │ Portal Web │◄────────────────────────┤ API REST │ │
│ │ (React) │ │ (NestJS) │ │
│ └──────────────┘ └──────┬───────┘ │
│ │ │
│ ┌─────────▼─────────┐
│ │ PostgreSQL DB │
│ └───────────────────┘
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Redis │ │ Prometheus │ │ Grafana │ │
│ │ (Cache) │ │ (Metrics) │ │ (Dashboards) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
- Node.js: >= 18.0.0
- npm: >= 9.0.0
- Docker (opcional, para desarrollo con contenedores)
- PostgreSQL (si no usas Docker)
# Clonar el repositorio
git clone <repository-url>
cd RP-ReleasePlanner-Web
# Instalar dependencias
npm install
# Configurar variables de entorno (ver docs/api/README.md)
cp apps/api/.env.example apps/api/.env# Ejecutar Portal Web (puerto 5173)
npm run dev
# o
nx serve portal
# Ejecutar API (puerto 3000)
npm run dev:api
# o
nx serve api
# Ejecutar ambos en paralelo
npm run dev:all# Build de todas las aplicaciones
npm run build
# Build específico
npm run build:portal
npm run build:api# Ejecutar todos los tests
npm run test
# Tests con coverage
npm run test:coverage
# Tests específicos
npm run test:portal
npm run test:apiRP-ReleasePlanner-Web/
├── apps/
│ ├── portal/ # Portal Web React
│ ├── api/ # API REST NestJS
│ └── portal-e2e/ # Tests end-to-end
├── libs/
│ ├── shared/
│ │ ├── types/ # Tipos TypeScript compartidos
│ │ └── utils/ # Utilidades compartidas
│ ├── api/
│ │ └── common/ # Módulos comunes NestJS
│ └── rp-shared/ # Validadores y utilidades compartidas
├── docs/ # 📚 Documentación completa
│ ├── api/ # Documentación de la API
│ ├── portal/ # Documentación del Portal
│ ├── architecture/ # Arquitectura y diseño
│ ├── ci-cd/ # CI/CD y despliegue
│ └── ...
├── scripts/ # Scripts de utilidad
├── helm/ # Helm charts para Kubernetes
├── monitoring/ # Configuración de monitoreo
└── docker-compose.yml # Configuración Docker Compose
📖 Toda la documentación está organizada en el directorio
docs/. Consulta el Índice de Documentación para navegación completa.
- Arquitectura General - Visión completa del sistema
- Arquitectura del Portal - Estructura y componentes del Portal Web
- Arquitectura de la API - Clean Architecture y estructura de la API
- Monorepo Nx - Guía del monorepo y comandos Nx
- Refactorización Release Plans - Resumen de refactorización
- Guía de la API - Endpoints y funcionalidades
- Guía de Migraciones - Migraciones de base de datos
- Migración PostgreSQL - Resumen de migración
- Verificación API - Checklist de verificación
- Arquitectura del Portal - Componentes y estructura
- Integración con API - Cómo integrar con el backend
- Setup Frontend - Configuración completa
- Componentes Gantt - Documentación del Gantt Chart
- Timeline - Componente Timeline
- Logging - Sistema de logging
- Autenticación Completa - Sistema de autenticación
- Implementación Auth - Detalles técnicos
- Auth Frontend - Autenticación en el Portal
- Tests de Seguridad - Tests implementados
- OWASP y Optimización - Seguridad y optimización
- Setup CI/CD - Configuración completa
- Guía de Despliegue - Proceso de despliegue
- Revisión de Despliegue - Checklist de despliegue
- Docker - Containerización
- Helm Charts - Despliegue en Kubernetes
- Containerización - Resumen de containerización
- Resiliencia y Monitoreo - Estrategias implementadas
- Setup de Monitoreo - Configuración Prometheus/Grafana
- Redis Caching - Implementación de caché
- Optimizaciones Completas - Resumen de optimizaciones
- Optimizaciones Avanzadas - Optimizaciones avanzadas
- Optimizaciones Finales - Últimas optimizaciones
- Análisis Release Planner - Análisis de optimización
- Refactorización Timeline - Propuesta de refactorización
- Implementación Timeline - Timeline optimizado
- Migración de Base de Datos - Guía completa
- Comparación Entidades - Comparación de entidades
- Reschedules - Implementación de reschedules
- Verificación Reschedules - Verificación
- rp-shared - Librería compartida principal
- Changelog rp-shared - Historial de cambios
- Migración rp-shared - Guía de migración
- Tipos Compartidos - Tipos TypeScript compartidos
- Utilidades Compartidas - Utilidades compartidas
- API Common - Módulos comunes de NestJS
- Setup Jest/VSCode - Configuración de testing
- Testing Portal - Resumen de tests
- Coverage Progress - Progreso de cobertura
- Builders - Patrón Builder
- Constantes - Sistema de constantes
- Fases - Componente de fases
- Logging Implementation - Implementación de logging
- Logging Usage - Uso del sistema de logging
- Migrations API - Migraciones de la API
- Constants API - Constantes de la API
- Arquitectura General - Entender el sistema completo
- Arquitectura del Portal - Estructura del frontend
- Arquitectura de la API - Estructura del backend
- Setup CI/CD - Configurar entorno de desarrollo
- Monorepo Nx - Comandos y estructura Nx
- Revisión de Despliegue - Checklist de despliegue
- Setup CI/CD - Configuración CI/CD
- Helm Charts - Despliegue en Kubernetes
- Docker - Containerización
- Monitoreo - Setup de monitoreo
- Arquitectura General - Visión completa
- Resiliencia y Monitoreo - Estrategias de resiliencia
- OWASP y Optimización - Seguridad y optimización
- Clean Architecture API - Arquitectura limpia
- Refactorización - Patrones aplicados
- Testing Portal - Tests del Portal
- Tests de Seguridad - Tests de seguridad
- Coverage Progress - Cobertura de tests
- Setup Jest/VSCode - Configuración de testing
- React 19 - Biblioteca UI
- TypeScript 5.9 - Lenguaje tipado
- Vite 7 - Build tool
- Material-UI 7 - Componentes UI
- Redux Toolkit - Gestión de estado
- TanStack Query - Server state management
- React Router 6 - Routing
- Tailwind CSS - Utility-first CSS
- NestJS 11 - Framework Node.js
- TypeORM - ORM
- PostgreSQL - Base de datos
- class-validator - Validación
- JWT - Autenticación
- Swagger - Documentación API
- Nx 22 - Monorepo tool
- Docker - Containerización
- Kubernetes - Orquestación
- Helm - Gestión de charts
- Prometheus - Métricas
- Grafana - Dashboards
- Redis - Caché
npm run dev # Ejecutar Portal Web
npm run dev:api # Ejecutar API
npm run dev:all # Ejecutar Portal y API en paralelonpm run build # Build de todas las aplicaciones
npm run build:portal # Build del Portal
npm run build:api # Build de la APInpm run test # Ejecutar todos los tests
npm run test:coverage # Tests con coverage
npm run test:portal # Tests del Portal
npm run test:api # Tests de la APInpm run lint # Lint de todas las aplicaciones
npm run lint:portal # Lint del Portal
npm run lint:api # Lint de la API
npm run format # Formatear código
npm run format:check # Verificar formatonx graph # Visualizar grafo de dependencias
nx affected:test # Tests de archivos afectados
nx affected:build # Build de archivos afectados
nx affected:lint # Lint de archivos afectadosEste repositorio sigue el modelo de branching Git Flow.
main: Rama de produccióndevelop: Rama de integración
feature/: Nuevas funcionalidadesrelease/: Preparación de releaseshotfix/: Correcciones urgentessupport/: Soporte
# Iniciar una feature
git flow feature start <nombre>
# Publicar una feature (compartir en origin)
git flow feature publish <nombre>
# Finalizar una feature (merge a develop)
git flow feature finish <nombre># Iniciar un release desde develop
git flow release start <version>
# Estabilizar en la rama release/<version>
# (docs, version, fixes)
# Finalizar un release (merge a main y develop, tag)
git flow release finish <version># Iniciar un hotfix desde main
git flow hotfix start <version>
# Finalizar un hotfix (merge a main y develop, tag)
git flow hotfix finish <version>- Features:
feature/user-authentication - Releases:
release/1.2.0 - Hotfixes:
hotfix/1.2.1
- Abrir pull requests desde
feature/*yrelease/*haciadevelop - Abrir pull requests de hotfix hacia
main(el finish mergea de vuelta adevelop)
- Crear una rama feature:
git flow feature start mi-feature - Desarrollar y commitear: Realizar cambios y commits descriptivos
- Publicar la feature:
git flow feature publish mi-feature - Crear Pull Request: Abrir PR hacia
develop - Code Review: Esperar aprobación
- Merge: Una vez aprobado, mergear a
develop
- TypeScript: Tipado estricto
- ESLint: Seguir reglas configuradas
- Prettier: Formato automático
- Tests: Escribir tests para nuevas funcionalidades
- Documentación: Actualizar documentación relevante
Usar commits descriptivos siguiendo Conventional Commits:
feat: agregar nueva funcionalidad de exportación
fix: corregir bug en cálculo de fechas
docs: actualizar documentación de API
refactor: refactorizar componente GanttChart
test: agregar tests para PlanCard
Para preguntas, problemas o sugerencias:
- Issues: Abrir un issue en GitHub
- Documentación: Consultar
docs/ydocs/INDEX.md - Wiki: (si está disponible)
[Especificar licencia si aplica]
- [Mencionar tecnologías y herramientas utilizadas]
- [Créditos a contribuidores si aplica]
📚 Ver Documentación Completa | 🏗️ Arquitectura | 🚀 Inicio Rápido