Recomendaciones de arquitectura

Stack y principios para la reimplementación

Recomendaciones de arquitectura — Reimplementación ArcorTruck BackOffice

Este documento propone una arquitectura performante, mantenible y visualmente alineada a Material Design para reemplazar el BackOffice web descrito en el manual v2, preservando capacidades: autenticación, administración móvil (preparación de datos), reportes tabulares con exportación, tablero operativo, mapas con Google Maps y configuración técnica sensible.


1. Principios de diseño

  1. Separación clara UI / API / datos: el navegador no conoce credenciales de base de datos ni API keys; solo el backend.
  2. Material Design como contrato de UX: un solo sistema de diseño (tokens, elevación, tipografía, componentes) para reducir deuda de UI.
  3. Dominio explícito: reparto, cobranzas, devoluciones, móvil y configuración como bounded contexts comunicados por APIs versionadas.
  4. Operaciones pesadas asíncronas: “Generar todos”, exportaciones masivas y agregaciones de mapas en cola de trabajos con estado visible.

2. Stack recomendado (opción principal)

2.1 Frontend — Angular 19+ con Angular Material (MD3)

Criterio Motivo
Material Design Angular Material es la implementación de referencia oficial del lenguaje Material para equipos que priorizan coherencia con las guías Google.
Backoffice enterprise Formularios complejos, tablas, diálogos y navegación lateral encajan bien con el ecosistema Angular.
Rendimiento SSR opcional con Angular Universal si hace falta SEO o first paint; en intranet suele bastar SPA + lazy loading de rutas y OnPush por defecto en componentes críticos.
Equipo y longevidad Adecuado para aplicaciones corporativas de largo ciclo de vida.

Alternativa sólida: React 19 + TypeScript + MUI (Material UI) si el equipo ya está estandarizado en React; misma línea visual Material con ecosistema más amplio de librerías.

No recomendado como primera opción solo por moda: mezclar varias librerías de UI Material-like sin sistema de diseño — genera inconsistencia visual.

2.2 Backend — Go 1.23+ (p. ej. fiber o chi) o Rust (axum)

Opción Cuándo elegirla
Go Equipo necesita velocidad de desarrollo, binario único, concurrencia simple para workers y IO de BD/API Maps; curva suave.
Rust Máximo control de memoria y seguridad en concurrencia; coste inicial de desarrollo mayor.

API: REST JSON versionada (/v1/...) + OpenAPI generado desde código o anotaciones; documentación consumible por el frontend.

Autenticación: OIDC (Keycloak, Entra ID, etc.) o sesiones seguras (cookie HTTP-only) según política del distribuidor; RBAC (roles: operador, supervisor, técnico).

2.3 Datos

2.4 Mapas

2.5 Exportación Excel


3. Arquitectura lógica (C4 — nivel contenedor)

flowchart LR
  subgraph client [Navegador]
    SPA[SPA Angular + Material]
  end
  subgraph edge [Borde]
    GW[API Gateway / TLS]
  end
  subgraph core [Backend]
    API[API REST]
    AUTH[Servicio Auth]
    WORK[Workers cola]
  end
  subgraph data [Datos]
    PG[(PostgreSQL)]
    CACHE[(Redis opcional)]
    QUEUE[(Cola mensajes)]
  end
  subgraph ext [Externos]
    GMAPS[Google Maps APIs]
    LEGADO[ERP América / legado vía conector]
  end
  SPA --> GW --> API
  API --> PG
  API --> QUEUE
  WORK --> QUEUE
  WORK --> PG
  WORK --> LEGADO
  SPA --> GMAPS
  API --> AUTH
  API --> CACHE

4. Módulos alineados al manual

Módulo funcional Responsabilidad backend Notas frontend (Material)
Auth Login, logout, refresh, permisos MatSidenav + toolbar; form login MatFormField
Admin móvil Orquestación jobs, estado por repartidor MatButton, MatSelect, MatCheckbox, snackbar progreso
Reportes Queries paginadas, orden, export MatTable + MatSort + MatPaginator; filtros en MatCard
Tableros Agregados intradía, búsqueda MatTable / data grid; chips de filtro
Mapas Endpoint GeoJSON + metadatos leyenda Mapa + MatBottomSheet o MatDialog para detalle de marcador
Configuración CRUD parámetros, secretos vía vault Formularios secciónados; máscara de secretos

5. Seguridad y configuración (crítico por UC-16)


6. Despliegue sugerido


7. Roadmap técnico sugerido

  1. Fundaciones: auth, layout Material, i18n (es-AR), telemetría.
  2. Reportes de mayor valor (cobranza general + reparto por hoja) con paginación y Excel async.
  3. Admin móvil con cola y pantalla de estado.
  4. Tablero de avance.
  5. Mapas con leyenda y popups según especificación funcional ampliada.
  6. Configuración endurecida y separación de secretos.

8. Resumen ejecutivo

Capa Recomendación
UI Angular + Angular Material (MD3) (alternativa: React + MUI)
API Go (rápido de operar) o Rust (máximo rigor)
BD PostgreSQL + read models / MV donde aplique
Async Cola + workers para preparación móvil y Excel
Mapas Google Maps con key desde backend/secret manager
Seguridad RBAC, secretos cifrados, sin credenciales en cliente

Esta combinación cumple el objetivo de elegancia profesional Material, rendimiento en servidor y claridad arquitectónica para un backoffice B2B multi-distribuidor.


Documento orientado a la reimplementación descrita por el equipo de producto; validar integraciones reales (América, móvil) con documentación técnica adicional.