← Documentos

Diagrama de componentes

Diagrama UML de Componentes — ExpressMX

Resumen

El presente documento formaliza la vista de componentes del sistema ExpressMX siguiendo la notacion UML 2.5, expresada con la sintaxis flowchart de Mermaid para garantizar la trazabilidad entre el modelo y la implementacion. La arquitectura corresponde a un monorepo pnpm con tres aplicaciones de despliegue independiente (apps/web, apps/mobile-client, apps/mobile-provider) que reutilizan cinco paquetes compartidos (@expressmx/database, @expressmx/validations, @expressmx/types, @expressmx/utils y @expressmx/config). Cada componente se modela con el estereotipo <<component>> y expone interfaces (puertos UML) tipadas por contrato: REST/JSON sobre HTTPS protegido por JWT Bearer para clientes moviles, Server Actions sobre cookies de sesion HttpOnly para el panel administrativo, SMTP sobre HTTPS para correo transaccional y el protocolo de cable de Postgres para la persistencia.

El objetivo de la vista es hacer explicita la cohesion vertical entre tiers (cliente, aplicacion, datos) y la cohesion horizontal entre paquetes compartidos, evidenciando que ningun cliente movil depende directamente del paquete @expressmx/database, lo que preserva el principio de zero-trust/Backend-for-Frontend exigido por el caso practico.

Diagrama (PlantUML)

Fuente: uml-component-diagram.puml

Diagrama de componentes

Renderizar con: plantuml -tpng uml-component-diagram.puml

Inventario de componentes

Componente Tipo Archivo / ubicacion fuente Proposito
mobile-client Aplicacion Expo apps/mobile-client/package.json Aplicacion para usuarios finales; consume API REST con JWT.
mobile-provider Aplicacion Expo apps/mobile-provider/package.json Aplicacion para prestadores; consume API REST con JWT.
Browser Cliente externo n/a Renderiza el panel web-admin mediante HTTPS.
web-admin Aplicacion Next.js 16 apps/web/package.json Panel de administracion, API y orquestacion de tareas.
Dashboard Pages Subcomponente apps/web/src/app/**/page.tsx Vistas server-rendered del panel administrativo.
API REST Subcomponente apps/web/src/app/api/**, apps/web/src/app/api/v1/** Endpoints HTTP versionados para clientes moviles y dashboard.
Server Actions Subcomponente apps/web/src/lib/dashboard/actions/** Mutaciones tipadas invocadas desde la UI server-rendered.
Auth Subsystem Subcomponente apps/web/src/lib/auth/{guards,session,mobile}.ts Emite y verifica JWT/cookies, hash bcrypt, OTP.
RBAC Engine Subcomponente apps/web/src/lib/dashboard/{rbac,rbac-shared,auth-gate}.ts Construye el viewer y resuelve permisos por rol.
Audit Logger Subcomponente apps/web/src/lib/dashboard/audit.ts Registra mutaciones (logAccion) en la tabla de auditoria.
@expressmx/database Package packages/database/package.json Pool pg, helpers de transaccion y queries SQL.
@expressmx/validations Package packages/validations/package.json Esquemas Zod compartidos cliente-servidor.
@expressmx/types Package packages/types/package.json DTOs y contratos derivados de los esquemas Zod.
@expressmx/config Package packages/config/{eslint,typescript} Configuracion compartida de lint y tsconfig.
@expressmx/utils Package packages/utils/package.json Helpers puros (formato, fechas, mapeos).
Neon Postgres Servicio externo DATABASE_URL (env) Postgres serverless que aloja el esquema productivo.
Resend Servicio externo RESEND_API_KEY (env) Envio de correo transaccional via SMTP/HTTPS.
Expo EAS Servicio externo apps/mobile-*/eas.json Build y distribucion OTA de las apps Expo.
Vercel Edge Servicio externo apps/web (hosting) Hosting serverless del panel Next.js.

Interfaces (UML ports)

Trazabilidad


Cubre Problema 2 (Arquitectura) del Caso Practico SOFTWARE 6.

↑ Volver arriba