Skip to main content

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.