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
- Características Principales
- Arquitectura del Sistema
- Inicio Rápido
- Deployment
- Documentación
- Testing
- Monitoreo
- Configuración
- Troubleshooting
- ✅ 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
- ✅ Clean Architecture con separación de capas
- ✅ Principios SOLID aplicados
- ✅ Domain-Driven Design (DDD)
- ✅ TypeORM para persistencia
- ✅ PostgreSQL como base de datos
- ✅ Autenticación JWT
- ✅ Rate Limiting (OWASP)
- ✅ Validación de entrada
- ✅ Sanitización de datos sensibles
- ✅ CORS configurado
- ✅ Helmet para headers de seguridad
- ✅ Métricas en tiempo real
- ✅ Logging estructurado con Winston
- ✅ Health checks detallados
- ✅ Dashboard de monitoreo en Portal
- ✅ Métricas de rendimiento y errores
- ✅ Tests automatizados con 100% de cobertura
- ✅ Deployment con Docker Compose
- ✅ Verificaciones de integridad pre-deployment
┌─────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────┘
# 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 healthServicios Disponibles:
- 🌐 Portal: http://localhost:4200
- 🔌 API: http://localhost:3000/api/v1
- 📚 Swagger: http://localhost:3000/api/docs
- 🗄️ PostgreSQL: localhost:5432
# 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
# 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
Toda la documentación está organizada en docs/:
- QUICK_START_DOCKER.md - Inicio rápido con Docker Compose (3 pasos)
- README_DEPLOYMENT.md - Guía rápida de deployment
- README_DOCKER.md - Guía completa de Docker Setup
- DEPLOYMENT.md - Guía completa de deployment y compilación
- MONITORING.md - Sistema de monitoreo completo
- INTEGRITY_CHECKS.md - Verificación de integridad y cobertura
- README-DATABASE.md - Documentación completa de base de datos
- requirements-fields.md - Campos de requisitos y modelo de datos
- CHANGELOG.md - Historial de cambios del proyecto
Ver documentación completa en apps/api/docs/:
- Arquitectura y estructura
- Guías de testing
- Reglas de compatibilidad
- Guías de implementación
Ver apps/portal/README.md para documentación del portal.
# 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:checkEl proyecto incluye scripts de testing y debugging en tests/:
- test-api.js - Tests básicos de API (login, autenticación)
- test-requirements.js - Tests específicos de requisitos
- verify-full-flow.js - Verificación del flujo completo
- verify-rules.js - Verificación de reglas y validaciones
- api-debug.js - Scripts de debugging para la API
📖 Documentación Completa: Ver tests/README.md
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)
# 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
# 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=infoNEXT_PUBLIC_API_URL=http://localhost:3000/api/v1📖 Configuración Completa: Ver env.docker.example
# 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 API (desde rp-workspace)
cd rp-workspace && npm run build:api
# Build Portal (desde rp-workspace)
cd rp-workspace/apps/portal && npm run build# 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- 18 Entidades principales
- PostgreSQL 15+
- TypeORM como ORM
- Migraciones automáticas
Portfolio- Portfolios estratégicosInitiative- IniciativasEpic- EpicsRequirement- RequisitosSponsor- SponsorsProductOwner- Product Owners- Catálogos (Priority, Status, Complexity, etc.)
📖 Documentación Completa: Ver docs/README-DATABASE.md
Ejecuta el script de verificación para asegurar que todo esté correctamente configurado:
cd rp-workspace && ./scripts/verify-integrity.shEste 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
- ✅ 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
# 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# 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# Verificar variable NEXT_PUBLIC_API_URL
echo $NEXT_PUBLIC_API_URL
# Verificar si API está corriendo
curl http://localhost:3000/api/v1/health/liveness# 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 configPara problemas de deployment, consulta la documentación en docs/.
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
- ✅ 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
- Mejoras continuas de rendimiento
- Nuevas features según requerimientos
- Crear una rama desde
develop - Hacer cambios
- Ejecutar tests y linting
- Crear Pull Request
- Esperar revisión y aprobación
- ✅ ESLint para linting
- ✅ Prettier para formato
- ✅ 100% Coverage requerido
- ✅ Conventional Commits recomendado
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
- Índice de Documentación
- Guía de Inicio Rápido
- Guía de Deployment
- Documentación de Monitoreo
- Documentación de Base de Datos
MIT License - Ver LICENSE para detalles.
Desarrollado con ❤️ usando NestJS, Next.js y PostgreSQL