Workspace Nx
El repositorio (apolo-app-platcom-platform) está organizado como un monorepo Nx, lo que permite centralizar múltiples aplicaciones y librerías compartidas bajo una misma workspace.
Estructura general
La estructura principal es:
apolo-app-platcom-platform/
├── apps/ # Puntos de entrada de la aplicación
│ ├── bff-api/ # Backend para Frontend
│ ├── applications-api/ # Servicio de aplicaciones
│ ├── auth-api/ # Servicio de autenticación
│ ├── core-api/ # Servicio core
│ ├── devs-portal/ # Portal de documentación (Docusaurus)
│ ├── playground-library/ # Playground de librerías
│ ├── portal-web/ # Portal Web de auditoría
│ ├── reports-api/ # Servicio de reportes
│ └── tenants-api/ # Servicio de multi-tenant
├── libs/ # Librerías compartidas
│ ├── libs/ # Módulos de dominio central / utilidades
│ └── apolo-pcp-gadgets/ # Librería frontend compartida (componentes/UI)
└── config/ # Configuración
└── .secretsrc.json # Plantilla de secretos (Seki)
Apps
Las carpetas dentro de apps/ representan aplicaciones desplegables:
- Servicios backend (NestJS):
bff-api,auth-api,applications-api,core-api,reports-api,tenants-api, etc. - Frontend:
portal-web. - Documentación:
devs-portal. - Playground:
playground-library.
Cada app tiene su propio project.json (o configuración equivalente) con targets como serve, build, test, lint, secrets, etc.
Libs
Las carpetas dentro de libs/ contienen código reutilizable:
- Librerías de dominio, DTOs, contratos de eventos, validaciones con Zod, etc.
- Componentes UI y helpers compartidos entre proyectos frontend.
- SDK / librería para publicación de eventos de auditoría (modelo event-driven).
El objetivo es que:
- La lógica de negocio y contratos no estén acoplados a una única app.
- Nuevos servicios puedan reutilizar librerías existentes sin duplicar código.
Comandos Nx frecuentes
Comandos por Proyecto
Backend para frontend (bff-api)
npx nx serve bff-api # Servidor de desarrollo
npx nx build bff-api # Compilación de producción
npx nx test bff-api # Ejecutar pruebas
npx nx lint bff-api # Ejecutar linting
npx nx run bff-api:secrets # Generar secretos
Servicio de Autenticación (auth-api)
npx nx serve auth-api
npx nx build auth-api
npx nx test auth-api
npx nx lint auth-api
npx nx run auth-api:secrets
Servicio de Aplicaciones (applications-api)
npx nx serve applications-api
npx nx build applications-api
npx nx test applications-api
npx nx lint applications-api
npx nx run applications-api:secrets
Servicio Core (core-api)
npx nx serve core-api
npx nx build core-api
npx nx test core-api
npx nx lint core-api
npx nx run core-api:secrets
Servicio de Reportes (reports-api)
npx nx serve reports-api
npx nx build reports-api
npx nx test reports-api
npx nx lint reports-api
npx nx run reports-api:secrets
Servicio de Tenants (tenants-api)
npx nx serve tenants-api
npx nx build tenants-api
npx nx test tenants-api
npx nx lint tenants-api
npx nx run tenants-api:secrets
Aplicación Web (portal-web)
npx nx serve portal-web
npx nx build portal-web
npx nx lint portal-web
npx nx run portal-web:secrets
Documentación (devs-portal)
npx nx serve devs-portal
npx nx run devs-portal:build
Playground de Librerías
npx nx serve playground-library
Formateo
# Formatear todos los archivos
npx nx format:write
# Verificar formateo
npx nx format:check
Más información
- Documentación oficial de Nx: https://nx.dev
- Para detalles específicos de cada proyecto, consulta la sección de Estructura del proyecto y Arquitectura en la documentación principal.