Skip to content

ReleasePlanner/RP-Requirements

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📋 Requirements Management System

Complete requirements management system built with NestJS (API) and Next.js (Portal), following Clean Architecture principles, SOLID, and OWASP security best practices.

Repository: ReleasePlanner/RP-Requirements


📑 Tabla de Contenidos


🎯 Características Principales

📊 Gestión de Requisitos

  • ✅ Gestión completa de requisitos con matriz de priorización Belcorp
  • ✅ Asociación con Portfolios, Iniciativas, Epics
  • ✅ Seguimiento de esfuerzo, valor de negocio y métricas
  • ✅ Control de descubrimiento funcional y experimentación
  • ✅ Referencias externas (Jira, Azure DevOps)
  • ✅ Dependencias de equipos

🏗️ Arquitectura

  • Clean Architecture con separación de capas
  • Principios SOLID aplicados
  • Domain-Driven Design (DDD)
  • TypeORM para persistencia
  • PostgreSQL como base de datos

🔒 Seguridad

  • ✅ Autenticación JWT
  • ✅ Rate Limiting (OWASP)
  • ✅ Validación de entrada
  • ✅ Sanitización de datos sensibles
  • ✅ CORS configurado
  • ✅ Helmet para headers de seguridad

📊 Monitoreo

  • ✅ Métricas en tiempo real
  • ✅ Logging estructurado con Winston
  • ✅ Health checks detallados
  • ✅ Dashboard de monitoreo en Portal
  • ✅ Métricas de rendimiento y errores

🚀 Testing

  • ✅ Tests automatizados con 100% de cobertura
  • ✅ Deployment con Docker Compose
  • ✅ Verificaciones de integridad pre-deployment

🏛️ Arquitectura del Sistema

┌─────────────────────────────────────────────────────────┐
│                    Portal (Next.js)                     │
│              Port: 4200                                 │
│  - Dashboard                                            │
│  - Requirements Management                              │
│  - Monitoring Dashboard                                 │
└──────────────────┬──────────────────────────────────────┘
                   │ HTTP/REST
┌──────────────────▼──────────────────────────────────────┐
│              API (NestJS)                               │
│              Port: 3000                                 │
│  ┌──────────────────────────────────────────────┐     │
│  │  Presentation Layer (Controllers)             │     │
│  │  - Auth, Requirements, Portfolios, etc.      │     │
│  └──────────────────┬───────────────────────────┘     │
│  ┌──────────────────▼───────────────────────────┐     │
│  │  Application Layer (Services)                 │     │
│  │  - Business Logic                             │     │
│  └──────────────────┬───────────────────────────┘     │
│  ┌──────────────────▼───────────────────────────┐     │
│  │  Domain Layer (Entities)                      │     │
│  │  - Requirement, Portfolio, Epic, etc.          │     │
│  └──────────────────┬───────────────────────────┘     │
│  ┌──────────────────▼───────────────────────────┐     │
│  │  Infrastructure Layer                         │     │
│  │  - Repositories, Database, External APIs     │     │
│  └──────────────────┬───────────────────────────┘     │
└──────────────────────┼──────────────────────────────────┘
                      │ TypeORM
┌──────────────────────▼──────────────────────────────────┐
│         PostgreSQL Database                             │
│         Port: 5432                                      │
│  - 18 Main entities                                     │
│  - Automatic migrations                                │
└─────────────────────────────────────────────────────────┘

🚀 Inicio Rápido

Opción 1: Docker Compose (Recomendado para Desarrollo Local)

# 1. Clonar repositorio
git clone https://github.com/ReleasePlanner/RP-Requirements.git
cd RP-Requirements/rp-workspace

# 2. Configurar variables de entorno
cp env.docker.example .env
# Editar .env con tus valores

# 3. Iniciar todos los servicios
make up
# o
docker-compose up -d

# 4. Verificar que todo funciona
make health

Servicios Disponibles:

Opción 2: Desarrollo Local

# 1. Entrar al workspace
cd rp-workspace

# 2. Instalar dependencias
npm ci

# 3. Configurar base de datos PostgreSQL
# Crear base de datos: requirements_db
# Configurar variables de entorno en apps/api/.env

# 4. Ejecutar migraciones y seed
cd apps/api
npm run migration:run
npm run seed:run

# 5. Iniciar API (desde rp-workspace)
cd ../..
npm run start:api

# 6. En otra terminal, iniciar Portal (desde rp-workspace)
cd rp-workspace
npm run start:portal

📖 Guía Completa: Ver docs/QUICK_START_DOCKER.md


🚀 Deployment

Deployment Local con Docker

# 1. Construir imágenes Docker
docker-compose build

# 2. Iniciar servicios
docker-compose up -d

# 3. Verificar salud
curl http://localhost:3000/api/v1/health/liveness
curl http://localhost:4200

📖 Documentación Completa: Ver docs/DEPLOYMENT.md


📚 Documentación

📖 Índice de Documentación

Toda la documentación está organizada en docs/:

🚀 Guías de Inicio Rápido

🐳 Docker y Deployment

📊 Monitoreo y Verificación

🗄️ Base de Datos

📝 Historial de Cambios

📖 Documentación por Aplicación

API (NestJS)

Ver documentación completa en apps/api/docs/:

  • Arquitectura y estructura
  • Guías de testing
  • Reglas de compatibilidad
  • Guías de implementación

Portal (Next.js)

Ver apps/portal/README.md para documentación del portal.


🧪 Testing

Tests Unitarios

# Ejecutar todos los tests (desde rp-workspace)
cd rp-workspace/apps/api && npm test

# Tests con cobertura (desde rp-workspace)
cd rp-workspace/apps/api && npm run test:cov

# Verificar cobertura (100% requerido) (desde rp-workspace)
cd rp-workspace/apps/api && npm run test:cov:check

Test Scenarios y Scripts de Verificación

El proyecto incluye scripts de testing y debugging en tests/:

📖 Documentación Completa: Ver tests/README.md


📊 Monitoreo

Dashboard de Monitoreo

Accede al dashboard en: http://localhost:4200/portal/monitoring

Métricas Disponibles:

  • Total de requests
  • Tasa de errores
  • Tiempo promedio de respuesta
  • Requests lentos (>500ms)
  • Errores recientes
  • Recursos del sistema (CPU, Memoria)

Endpoints de Monitoreo

# Métricas generales
GET /api/v1/monitoring/metrics

# Métricas de requests
GET /api/v1/monitoring/metrics/requests

# Métricas de errores
GET /api/v1/monitoring/metrics/errors

# Health check detallado
GET /api/v1/monitoring/health/detailed

# Recursos del sistema
GET /api/v1/monitoring/system

📖 Documentación Completa: Ver docs/MONITORING.md


⚙️ Configuración

Variables de Entorno

API (apps/api/.env o .env para Docker)

# Server
NODE_ENV=development
PORT=3000

# Database
DB_HOST=localhost
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE=requirements_db
DB_SYNCHRONIZE=false
DB_LOGGING=false

# JWT
JWT_SECRET=your-super-secret-jwt-key-change-in-production-min-32-chars
JWT_EXPIRES_IN=1d

# CORS
CORS_ORIGIN=http://localhost:4200

# Monitoring
ENABLE_MONITORING=true
METRICS_RETENTION_MS=3600000
LOG_LEVEL=info

Portal

NEXT_PUBLIC_API_URL=http://localhost:3000/api/v1

📖 Configuración Completa: Ver env.docker.example


🛠️ Comandos Disponibles

Desarrollo

# Iniciar API en modo desarrollo (desde rp-workspace)
cd rp-workspace && npm run start:api

# Iniciar Portal en modo desarrollo (desde rp-workspace)
cd rp-workspace && npm run start:portal

# Ejecutar tests (desde rp-workspace)
cd rp-workspace && npm run test:api

# Ejecutar tests con cobertura (desde rp-workspace)
cd rp-workspace/apps/api && npm run test:cov

# Linting (desde rp-workspace)
cd rp-workspace && npm run lint:api
cd rp-workspace/apps/portal && npm run lint

Build

# Build API (desde rp-workspace)
cd rp-workspace && npm run build:api

# Build Portal (desde rp-workspace)
cd rp-workspace/apps/portal && npm run build

Docker

# Ver todos los comandos disponibles (desde rp-workspace)
cd rp-workspace && make help

# Iniciar servicios (desde rp-workspace)
cd rp-workspace && make up

# Detener servicios (desde rp-workspace)
cd rp-workspace && make down

# Ver logs (desde rp-workspace)
cd rp-workspace && make logs
cd rp-workspace && make logs-api
cd rp-workspace && make logs-portal

# Health checks (desde rp-workspace)
cd rp-workspace && make health

# Ejecutar migraciones (desde rp-workspace)
cd rp-workspace && make migrate

# Seed de base de datos (desde rp-workspace)
cd rp-workspace && make seed

🗄️ Base de Datos

Estructura

  • 18 Entidades principales
  • PostgreSQL 15+
  • TypeORM como ORM
  • Migraciones automáticas

Entidades Principales

  • Portfolio - Portfolios estratégicos
  • Initiative - Iniciativas
  • Epic - Epics
  • Requirement - Requisitos
  • Sponsor - Sponsors
  • ProductOwner - Product Owners
  • Catálogos (Priority, Status, Complexity, etc.)

📖 Documentación Completa: Ver docs/README-DATABASE.md


🔍 Verificación de Integridad

Ejecuta el script de verificación para asegurar que todo esté correctamente configurado:

cd rp-workspace && ./scripts/verify-integrity.sh

Este script verifica:

  • ✅ Estructura de archivos
  • ✅ Configuración de base de datos
  • ✅ Integración de monitoreo
  • ✅ Configuración de Docker
  • ✅ Workflows de CI/CD

📖 Documentación Completa: Ver docs/INTEGRITY_CHECKS.md


🛡️ Seguridad

Mejores Prácticas Implementadas

  • Autenticación JWT con tokens seguros
  • Rate Limiting para prevenir abuso
  • Validación de Entrada con class-validator
  • Protección contra SQL Injection con TypeORM
  • Protección XSS con sanitización
  • CORS correctamente configurado
  • Helmet para headers de seguridad
  • Gestión de Secrets con variables de entorno

Configuración de Seguridad

# JWT Secret (mínimo 32 caracteres)
JWT_SECRET=your-super-secret-jwt-key-change-in-production-min-32-chars

# Rate Limiting
THROTTLE_TTL=60
THROTTLE_LIMIT=100

# CORS
CORS_ORIGIN=http://localhost:4200

🐛 Troubleshooting

Problemas Comunes

API no inicia

# Verificar variables de entorno
cat rp-workspace/apps/api/.env

# Verificar conexión a base de datos
psql -h localhost -U postgres -d requirements_db

# Ver logs (desde rp-workspace)
cd rp-workspace && make logs-api

Portal no puede conectarse a API

# Verificar variable NEXT_PUBLIC_API_URL
echo $NEXT_PUBLIC_API_URL

# Verificar si API está corriendo
curl http://localhost:3000/api/v1/health/liveness

Base de datos no conecta

# Verificar servicio PostgreSQL (desde rp-workspace)
cd rp-workspace && docker-compose ps postgres

# Ver logs de base de datos (desde rp-workspace)
cd rp-workspace && make logs-db

# Verificar variables de entorno (desde rp-workspace)
cd rp-workspace && docker-compose config

Troubleshooting Deployment

Para problemas de deployment, consulta la documentación en docs/.


📋 Estructura del Proyecto

rp-workspace/
├── apps/
│   ├── api/                 # NestJS API
│   │   ├── src/
│   │   │   ├── domain/      # Entidades de dominio
│   │   │   ├── application/ # Lógica de negocio
│   │   │   ├── infrastructure/ # Repositorios, DB
│   │   │   ├── presentation/ # Controladores, DTOs
│   │   │   └── shared/      # Utilidades compartidas
│   │   └── docs/            # Documentación de API
│   └── portal/              # Next.js Portal
│       └── src/
│           ├── app/         # Rutas de Next.js
│           ├── features/    # Features del Portal
│           └── components/ # Componentes UI
├── docs/                    # Documentación completa
├── scripts/                 # Scripts de automatización
├── tests/                   # Scripts de testing y debugging
├── docker-compose.yml       # Orquestación Docker
└── Makefile                # Comandos útiles

📊 Estado del Proyecto

✅ Completado

  • ✅ API completa con Clean Architecture
  • ✅ Portal completo con Next.js
  • ✅ Sistema de monitoreo integrado
  • ✅ Docker Compose para deployment
  • ✅ Tests con 100% de cobertura
  • ✅ Documentación completa

🚧 En Desarrollo

  • Mejoras continuas de rendimiento
  • Nuevas features según requerimientos

🤝 Contribuir

Proceso de Contribución

  1. Crear una rama desde develop
  2. Hacer cambios
  3. Ejecutar tests y linting
  4. Crear Pull Request
  5. Esperar revisión y aprobación

Estándares de Código

  • ESLint para linting
  • Prettier para formato
  • 100% Coverage requerido
  • Conventional Commits recomendado

📞 Soporte

Para soporte o preguntas:

  • Crear un Issue en GitHub
  • Revisar documentación en docs/
  • Ver logs: cd rp-workspace && make logs
  • Ejecutar test scenarios: tests/
  • Verificar integridad: cd rp-workspace && ./scripts/verify-integrity.sh

🔗 Enlaces Útiles

Documentación

Testing

Aplicación


📄 Licencia

MIT License - Ver LICENSE para detalles.


Desarrollado con ❤️ usando NestJS, Next.js y PostgreSQL