Skip to content

MyPlanner System - My Project module: including API, Web/Mobile Client and Infrastructure

License

Notifications You must be signed in to change notification settings

ReleasePlanner/RP-ReleasePlanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Release Planner System

Sistema completo de gestión de planes de release con Portal Web, API REST e infraestructura de despliegue.

Nx React NestJS TypeScript


📋 Tabla de Contenidos


🎯 Descripción General

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

Características Clave

  • 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

🏗️ Arquitectura del Sistema

Stack Tecnológico

Frontend (Portal)

  • 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 sx prop + Tailwind CSS

Backend (API)

  • Framework: NestJS 11
  • ORM: TypeORM con PostgreSQL
  • Validación: class-validator + class-transformer
  • Autenticación: JWT + Guards
  • Documentación: Swagger/OpenAPI

Infraestructura

  • Monorepo: Nx 22
  • Containerización: Docker + Docker Compose
  • Orquestación: Kubernetes (Helm Charts)
  • CI/CD: GitHub Actions (configurable)

Diagrama de Arquitectura

┌─────────────────────────────────────────────────────────────┐
│                      Release Planner System                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────────┐                         ┌──────────────┐ │
│  │ Portal Web   │◄────────────────────────┤   API REST   │ │
│  │  (React)     │                         │  (NestJS)    │ │
│  └──────────────┘                         └──────┬───────┘ │
│                                                   │         │
│                                         ┌─────────▼─────────┐
│                                         │   PostgreSQL DB   │
│                                         └───────────────────┘
│                                                             │
│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐ │
│  │   Redis      │    │  Prometheus  │    │   Grafana    │ │
│  │  (Cache)     │    │ (Metrics)    │    │ (Dashboards) │ │
│  └──────────────┘    └──────────────┘    └──────────────┘ │
│                                                             │
└─────────────────────────────────────────────────────────────┘

🚀 Inicio Rápido

Prerrequisitos

  • Node.js: >= 18.0.0
  • npm: >= 9.0.0
  • Docker (opcional, para desarrollo con contenedores)
  • PostgreSQL (si no usas Docker)

Instalación

# 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

Desarrollo

# 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

# Build de todas las aplicaciones
npm run build

# Build específico
npm run build:portal
npm run build:api

Testing

# Ejecutar todos los tests
npm run test

# Tests con coverage
npm run test:coverage

# Tests específicos
npm run test:portal
npm run test:api

📁 Estructura del Proyecto

RP-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

📚 Documentación Completa

📖 Toda la documentación está organizada en el directorio docs/. Consulta el Índice de Documentación para navegación completa.

🗺️ Navegación Rápida por Temas

🏗️ Arquitectura y Diseño

🔌 API y Backend

🌐 Portal Web

🔐 Seguridad y Autenticación

🚀 CI/CD y Despliegue

📊 Monitoreo y Resiliencia

🔧 Optimizaciones y Refactorizaciones

🗄️ Base de Datos

📦 Librerías Compartidas

🛠️ Desarrollo y Testing

📝 Documentación Técnica Específica

📖 Guías de Inicio Rápido por Rol

👨‍💻 Para Desarrolladores Nuevos

  1. Arquitectura General - Entender el sistema completo
  2. Arquitectura del Portal - Estructura del frontend
  3. Arquitectura de la API - Estructura del backend
  4. Setup CI/CD - Configurar entorno de desarrollo
  5. Monorepo Nx - Comandos y estructura Nx

🔧 Para DevOps

  1. Revisión de Despliegue - Checklist de despliegue
  2. Setup CI/CD - Configuración CI/CD
  3. Helm Charts - Despliegue en Kubernetes
  4. Docker - Containerización
  5. Monitoreo - Setup de monitoreo

🏛️ Para Arquitectos

  1. Arquitectura General - Visión completa
  2. Resiliencia y Monitoreo - Estrategias de resiliencia
  3. OWASP y Optimización - Seguridad y optimización
  4. Clean Architecture API - Arquitectura limpia
  5. Refactorización - Patrones aplicados

🧪 Para QA/Testing

  1. Testing Portal - Tests del Portal
  2. Tests de Seguridad - Tests de seguridad
  3. Coverage Progress - Cobertura de tests
  4. Setup Jest/VSCode - Configuración de testing

🛠️ Tecnologías

Frontend

  • 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

Backend

  • NestJS 11 - Framework Node.js
  • TypeORM - ORM
  • PostgreSQL - Base de datos
  • class-validator - Validación
  • JWT - Autenticación
  • Swagger - Documentación API

Infraestructura

  • Nx 22 - Monorepo tool
  • Docker - Containerización
  • Kubernetes - Orquestación
  • Helm - Gestión de charts
  • Prometheus - Métricas
  • Grafana - Dashboards
  • Redis - Caché

📜 Scripts Disponibles

Desarrollo

npm run dev              # Ejecutar Portal Web
npm run dev:api          # Ejecutar API
npm run dev:all          # Ejecutar Portal y API en paralelo

Build

npm run build            # Build de todas las aplicaciones
npm run build:portal     # Build del Portal
npm run build:api        # Build de la API

Testing

npm 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 API

Linting y Formato

npm 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 formato

Nx Específicos

nx 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 afectados

🌿 Git Flow Workflow

Este repositorio sigue el modelo de branching Git Flow.

Ramas Principales

  • main: Rama de producción
  • develop: Rama de integración

Prefijos de Ramas

  • feature/: Nuevas funcionalidades
  • release/: Preparación de releases
  • hotfix/: Correcciones urgentes
  • support/: Soporte

Uso Diario

# 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>

Releases

# 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>

Hotfixes

# Iniciar un hotfix desde main
git flow hotfix start <version>

# Finalizar un hotfix (merge a main y develop, tag)
git flow hotfix finish <version>

Ejemplos de Nombres de Ramas

  • Features: feature/user-authentication
  • Releases: release/1.2.0
  • Hotfixes: hotfix/1.2.1

Notas

  • Abrir pull requests desde feature/* y release/* hacia develop
  • Abrir pull requests de hotfix hacia main (el finish mergea de vuelta a develop)

🤝 Contribuir

Proceso de Contribución

  1. Crear una rama feature: git flow feature start mi-feature
  2. Desarrollar y commitear: Realizar cambios y commits descriptivos
  3. Publicar la feature: git flow feature publish mi-feature
  4. Crear Pull Request: Abrir PR hacia develop
  5. Code Review: Esperar aprobación
  6. Merge: Una vez aprobado, mergear a develop

Estándares de Código

  • TypeScript: Tipado estricto
  • ESLint: Seguir reglas configuradas
  • Prettier: Formato automático
  • Tests: Escribir tests para nuevas funcionalidades
  • Documentación: Actualizar documentación relevante

Estructura de Commits

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

📞 Soporte

Para preguntas, problemas o sugerencias:

  1. Issues: Abrir un issue en GitHub
  2. Documentación: Consultar docs/ y docs/INDEX.md
  3. Wiki: (si está disponible)

📄 Licencia

[Especificar licencia si aplica]


🙏 Agradecimientos

  • [Mencionar tecnologías y herramientas utilizadas]
  • [Créditos a contribuidores si aplica]

About

MyPlanner System - My Project module: including API, Web/Mobile Client and Infrastructure

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •