workspace "Takami Platform" "C4 model – core, integrations, cross-cutting & UIs (con roles)" { model { /*───────────────── Personas ─────────────────*/ cashier = person "PDV" "Opera el punto de venta (POS)" administrator = person "Administrador" "Gestiona back-office y reportes" kitchenOp = person "Operador" "Monitorea y prepara pedidos" configurator = person "Configurador" "Administra catálogo, precios y parámetros" /*───────────────── Sistema principal ─────────────────*/ takamiSystem = softwareSystem "Tesla Platform" "Plataforma de restaurantes, logística y ventas (nombre interno: Takami Platform)" { /*─────────────── Core Domain Services ───────────────*/ group "Core Domain Services" { apiGateway = container "API Gateway" "Reverse-proxy, filtros cross-cutting" "Spring Boot" authApi = container "Authentication API" "Inicio de sesión y tokens" "Spring Boot" registerApi = container "Register API" "Clientes, usuarios y direcciones" "Spring Boot" paymentsApi = container "Payments API" "Descuentos, impuestos, métodos de pago" "Spring Boot" orderApi = container "Order Management API" "Ciclo de vida de órdenes" "Spring Boot" productsApi = container "Products Management API" "Menús, productos, modificadores" "Spring Boot" placesApi = container "Places Management API" "Marcas, restaurantes, compañías" "Spring Boot" filesApi = container "Files Management API" "Carga/descarga de archivos a S3" "Spring Boot" cronApi = container "Cron API" "Tareas programadas (Quartz)" "Spring Boot" reservationsApi = container "Reservations API" "Reservas de mesa" "Spring Boot" } /*─────────────── Cross-cutting Services ───────────────*/ group "Cross-cutting Services" { auditApi = container "Audit Server" "Logs de auditoría" "Spring Boot" databaseApi = container "Database Service API" "Fachada de reglas de datos" "Spring Boot" notifyApi = container "Notification & Logger API" "Push FCM + registro de eventos" "Spring Boot" } /*─────────────── Integration Services ───────────────*/ group "Integration Services" { rappiSvc = container "Rappi Integration Service" "Webhooks y delivery" "Spring Boot" beetrackSvc = container "Beetrack Integration Service" "Tracking de entregas" "Spring Boot" mercadoPagoSvc = container "MercadoPago Integration Service" "Pagos externos" "Spring Boot" axiSvc = container "Axiacore Webhook Service" "Marketing / campañas" "Spring Boot" masivSvc = container "Masiv SMS Service" "Envío de SMS" "Spring Boot" siesaSvc = container "Siesa ERP+POS Integration Service" "ERP e inventario" "Spring Boot" } /*─────────────── Data stores ───────────────*/ takamiDb = container "PostgreSQL Database" "Repositorio central" "AWS RDS – PostgreSQL" redis = container "Redis Cache" "Cache de sesión y lookup" "AWS ElastiCache" /*─────────────── Front-end Apps ───────────────*/ group "Front-end Apps (Angular)" { adminUi = container "Administrator UI" "Gestión back-office" "Angular" posUi = container "POS UI" "Punto de venta" "Angular" operatorUi = container "Operator UI" "Tablero de cocina / operador" "Angular" configuratorUi = container "Configurator UI" "Parametrización" "Angular" authUi = container "Auth UI" "Pantalla de login" "Angular" } /*─────────────── Relaciones de usuario → UIs ───────────────*/ cashier -> posUi "Opera el POS" "HTTPS" administrator -> adminUi "Gestiona back-office" "HTTPS" kitchenOp -> operatorUi "Gestiona preparación de pedidos" "HTTPS" configurator -> configuratorUi "Configura catálogo / precios" "HTTPS" cashier -> authUi "Inicia sesión" "HTTPS" administrator -> authUi "Inicia sesión" "HTTPS" kitchenOp -> authUi "Inicia sesión" "HTTPS" configurator -> authUi "Inicia sesión" "HTTPS" /*─────────────── UIs → Gateway ───────────────*/ adminUi -> apiGateway "Consume APIs" "HTTPS" posUi -> apiGateway "Consume APIs" "HTTPS" operatorUi -> apiGateway "Consume APIs" "HTTPS" configuratorUi -> apiGateway "Consume APIs" "HTTPS" authUi -> apiGateway "Consume APIs" "HTTPS" /*─────────────── Core flows ───────────────*/ apiGateway -> authApi "Enruta peticiones de autenticación" "HTTPS" apiGateway -> registerApi "Enruta operaciones de clientes" "HTTPS" apiGateway -> paymentsApi "Enruta pagos e impuestos" "HTTPS" apiGateway -> orderApi "Enruta órdenes" "HTTPS" apiGateway -> productsApi "Enruta productos / menús" "HTTPS" apiGateway -> placesApi "Enruta locales / marcas" "HTTPS" apiGateway -> filesApi "Enruta archivos" "HTTPS" apiGateway -> cronApi "Dispara jobs" "HTTPS" apiGateway -> reservationsApi "Enruta reservas" "HTTPS" apiGateway -> auditApi "Registra auditoría" "HTTPS" apiGateway -> notifyApi "Enruta notificaciones y logs" "HTTPS" /*─────────────── Persistencia ───────────────*/ authApi -> takamiDb "Lee/Escribe auth" "JDBC" registerApi -> takamiDb "Lee/Escribe clientes" "JDBC" paymentsApi -> takamiDb "Lee/Escribe pagos" "JDBC" orderApi -> takamiDb "Lee/Escribe órdenes" "JDBC" productsApi -> takamiDb "Lee/Escribe productos" "JDBC" placesApi -> takamiDb "Lee/Escribe restaurantes" "JDBC" filesApi -> takamiDb "Metadatos de archivo" "JDBC" reservationsApi -> takamiDb "Lee/Escribe reservas" "JDBC" auditApi -> takamiDb "Almacena logs" "JDBC" databaseApi -> takamiDb "Opera reglas de datos" "JDBC" authApi -> redis "Cachea tokens" "Redis" /*─────────────── Cross-cutting logs/notify ───────────────*/ cronApi -> notifyApi "Dispara notificaciones push" "HTTPS" authApi -> notifyApi "Envía logs" "HTTPS" registerApi -> notifyApi "Envía logs" "HTTPS" paymentsApi -> notifyApi "Envía logs" "HTTPS" orderApi -> notifyApi "Envía logs" "HTTPS" productsApi -> notifyApi "Envía logs" "HTTPS" placesApi -> notifyApi "Envía logs" "HTTPS" filesApi -> notifyApi "Envía logs" "HTTPS" reservationsApi -> notifyApi "Envía logs" "HTTPS" /*─────────────── Integraciones internas ───────────────*/ orderApi -> beetrackSvc "Actualiza tracking de entrega" "HTTPS" paymentsApi -> mercadoPagoSvc "Procesa pagos externos" "HTTPS" orderApi -> rappiSvc "Sincroniza estado de órdenes" "REST/Webhooks" /*─────────────── Gateway → Integrations ───────────────*/ apiGateway -> rappiSvc "Enruta integración" "HTTPS" apiGateway -> axiSvc "Enruta integración" "HTTPS" apiGateway -> masivSvc "Enruta integración" "HTTPS" apiGateway -> siesaSvc "Enruta integración" "HTTPS" /*─────────────── Persistencia de servicios de integración ───────────────*/ rappiSvc -> takamiDb "Persistencia básica" "JDBC" axiSvc -> takamiDb "Persistencia básica" "JDBC" masivSvc -> takamiDb "Persistencia básica" "JDBC" siesaSvc -> takamiDb "Persistencia básica" "JDBC" } /*───────────────── Sistemas externos ─────────────────*/ rappi = softwareSystem "Rappi" "Plataforma de delivery" beetrack = softwareSystem "Beetrack" "Tracking logístico" mercadoPago = softwareSystem "MercadoPago" "Pasarela de pagos" axiCore = softwareSystem "Axiacore" "Marketing / campañas" masivSms = softwareSystem "Masiv SMS" "Proveedor de SMS" siesaErp = softwareSystem "Siesa ERP+POS" "ERP e Inventario" /* Relaciones externas */ rappiSvc -> rappi "API Rappi" "REST/Webhooks" beetrackSvc -> beetrack "API Beetrack" "REST" mercadoPagoSvc -> mercadoPago "API MercadoPago" "REST" axiSvc -> axiCore "Webhook Axiacore" "Webhooks" masivSvc -> masivSms "API Masiv" "REST" siesaSvc -> siesaErp "API Siesa" "REST" /*───────────────── Despliegue (modelo, sin vista) ─────────────────*/ deploymentEnvironment "AWS Production" { deploymentNode "ALB / Web Layer" { containerInstance apiGateway } deploymentNode "EC2 AutoScaling – App Layer" { containerInstance authApi containerInstance registerApi containerInstance paymentsApi containerInstance orderApi containerInstance productsApi containerInstance placesApi containerInstance filesApi containerInstance cronApi containerInstance reservationsApi containerInstance auditApi containerInstance databaseApi containerInstance notifyApi deploymentNode "EC2 – Integration Cluster" { containerInstance rappiSvc containerInstance beetrackSvc containerInstance mercadoPagoSvc containerInstance axiSvc containerInstance masivSvc containerInstance siesaSvc } } deploymentNode "AWS RDS" { containerInstance takamiDb } deploymentNode "AWS ElastiCache" { containerInstance redis } } } /*───────────────── Views ─────────────────*/ views { systemContext takamiSystem { include cashier include administrator include kitchenOp include configurator include takamiSystem include rappi include beetrack include mercadoPago include axiCore include masivSms include siesaErp autolayout lr title "Contexto general – Tesla Platform" } container takamiSystem { include * autolayout lr title "Container view – Tesla Platform" } styles { element "Person" { background "#08427b" color "#ffffff" shape "Person" } element "Software System" { background "#3b82f6" color "#ffffff" } element "Container" { background "#1168bd" color "#ffffff" } element "Component" { background "#438dd5" color "#ffffff" } element "Container Instance" { background "#999999" color "#ffffff" } element "Deployment Node" { background "#dddddd" color "#000000" } } theme default } }