Volver al portafolio
Logística · Java y Spring Boot

LogiFlow

Plataforma de gestión logística y entregas en Java y Spring Boot: pedidos con sagas, rastreo en vivo, incidencias, SLA y app del conductor

Mi rol
Diseñador UX/UI · Análisis de arquitectura
LogiFlowLogiFlow
01

Contexto

LogiFlow es una plataforma de gestión logística y entregas para transportadoras y operaciones de última milla: pedidos, separación en los centros de distribución, flota, rutas, incidencias y SLA en una sola operación, del pedido a la puerta del cliente, con una app para el conductor.

Hice el producto, el UX/UI y el análisis de arquitectura. La base técnica es FTGO, la arquitectura de microservicios en Java y Spring Boot del libro Microservices Patterns, con sagas, outbox transaccional y CQRS; sobre ella diseñé las reglas logísticas, los flujos, las pantallas y el design system.

Licencia
Apache-2.0
Mi rol
Diseñador UX/UI, análisis de arquitectura
Stack
Java, Spring Boot, Apache Kafka, MySQL, Docker
02

Problema de negocio

En una operación de entregas, el pedido pasa por muchas manos: el cliente que compra, finanzas que aprueba, el centro de distribución que separa, el conductor que entrega. Cada etapa suele vivir en un sistema o planilla distinta, y la coordinación solo descubre el retraso cuando el cliente llama.

LogiFlow junta todo en una sola operación: muestra qué se va a retrasar antes de que se retrase, trata la entrega que falló con reglas claras y le da al conductor una app que funciona incluso sin señal.

03

La base técnica

De FTGO vienen los servicios en Spring Boot: pedido con ciclo de vida controlado por sagas (crear, cancelar y revisar), aprobación contra la cuenta del cliente, ticket de separación con estados, repartidor con disponibilidad y plan de recogidas y entregas, historial de pedidos en CQRS, API Gateway y documentación Swagger en cada servicio.

04

El producto LogiFlow

La capa de logística de última milla y toda la interfaz: centros de distribución, flota, rastreo en vivo, incidencias con límite de intentos, SLA por ventana de entrega, panel gerencial, informes, perfiles de acceso y la app del conductor.

05

Arquitectura

Cada servicio es una aplicación Spring Boot con base de datos propia. Las escrituras que involucran más de un servicio se convierten en sagas orquestadas por el Order Service, y los eventos salen por Apache Kafka con outbox transaccional: el evento se guarda en la misma transacción que el dato y se publica después, así nada se pierde entre la base y la cola. Al lado, cómo cada concepto de FTGO se convierte en un concepto de LogiFlow.

Servicios de FTGO, saga CreateOrder y el mapeo a LogiFlow
06

Decisiones de arquitectura y trade-offs

Seis decisiones registradas como ADRs: el contexto, lo que se decidió, el costo de cada una y cómo aparece para quien usa el producto.

Decisiones de arquitectura con contexto, costo y efecto en la pantalla
07

Arquitectura de información y flujos

Antes de las pantallas: el mapa del producto, los cinco perfiles de acceso y los tres flujos más importantes: del pedido a la entrega, incidencia en la entrega y revisión o cancelación.

Mapa del producto, perfiles y flujos principales
08

Las pantallas en Figma

Doce pantallas desktop con prototipo navegable, para quien coordina la operación.

  1. 01 / 10

    Dashboard operativo

    La primera pantalla responde “¿qué va a fallar hoy?”: pedidos del día, rutas en la calle, entregas a tiempo frente a la meta, retrasos e incidencias abiertas, el SLA de cada centro de distribución y la lista de pedidos con riesgo de retraso, ya con el margen en minutos.

  2. 02 / 10

    Pedidos

    Búsqueda, filtros por estado, centro, ventana y conductor, ordenación y paginación. Cada estado tiene un color fijo, y esperando aprobación, aprobado y rechazado son los estados reales del pedido en el Order Service.

  3. 03 / 10

    Detalle del pedido

    El ciclo de vida del pedido como línea de tiempo, con los pasos de la saga y del ticket de separación, el plan del conductor con cada recogida y entrega (el Plan del Delivery Service), el margen del SLA, los ítems y la auditoría de quién cambió qué.

  4. 04 / 10

    Nuevo pedido

    El formulario avisa que el pedido nace esperando aprobación, porque eso es lo que hace la saga. La ventana fuera del horario del cliente se bloquea en el campo, y el resumen recuerda que la misma validación corre en el servidor.

  5. 05 / 10

    Rastreo en vivo

    Las rutas activas con el progreso de cada conductor, filtros para atrasadas y sin señal, y en el mapa la ruta seleccionada con las paradas hechas, la próxima y el margen hasta el fin de la ventana.

  6. 06 / 10

    Incidencias

    La cola de problemas en la entrega y el tratamiento de cada uno: quién lo registró, la foto, la distancia a la dirección, el plazo del SLA y tres salidas posibles. Reprogramar exige motivo, y el tercer intento es el último.

  7. 07 / 10

    Informes y SLA

    Entregas a tiempo por semana frente a la meta, causas de fallo y productividad por conductor, leídos de la vista CQRS para no cargar la operación.

  8. 08 / 10

    Flota

    Conductores y vehículos con la disponibilidad del turno, que viene del Delivery Service, más el vehículo, la licencia y el desempeño a tiempo de cada conductor.

  9. 09 / 10

    Usuarios y permisos

    La matriz de permisos por perfil, aplicada en la API y no solo en la pantalla. El cliente B2B y el conductor ven solo sus propios pedidos.

  10. 10 / 10

    Login

    Ingreso por correo o por el inicio de sesión único de la empresa (OIDC), con bloqueo tras intentos fallidos. La recuperación de acceso usa un mensaje neutro, que no revela quién tiene cuenta.

09

Estados de la interfaz

Cargando, vacío, error y respuesta de las acciones. El error mantiene los filtros y muestra un código para soporte, y los avisos de pedido rechazado o en proceso vienen directo de los estados de las sagas.

Cargando, vacío, error y éxito
10

App del conductor

El plan del repartidor es una lista ordenada de recogidas y entregas. La app convierte esa lista en la ruta del día, con comprobante por foto, firma y ubicación, y una incidencia que queda guardada sin internet y se envía cuando vuelve la señal.

Ruta del día, comprobante de entrega e incidencia
11

Decisiones de UX/UI

Lo que guió las decisiones de interfaz:

Margen en lugar de estado
Para la coordinación, “en ruta” dice poco. El margen en minutos hasta el fin de la ventana dice si hay que actuar
Un color por estado
El mismo color en lista, detalle, mapa y app, para encontrar el problema sin leer
Naranja solo para actuar
La acción principal de cada pantalla y lo que exige atención; el resto es neutro
Reglas visibles
Límite de intentos, motivo obligatorio y validación en el servidor aparecen en la pantalla, para que nadie se sorprenda
El conductor primero
Botones grandes, pocos campos y funcionamiento offline en la app

Sistema Visual

Un design system propio en Figma, con variables de color, espaciado y radio, estilos de texto y componentes con variantes: botón, estado del pedido, campo, ítem de menú, filtro y card de indicador. Neutros fríos para la lectura larga, naranja para actuar y un color por estado.

Paleta

Naranja Señal

#F2551D

Acción principal y alertas

Noche

#0E1525

Menú lateral

Tinta

#101828

Títulos y textos

Verde Entregado

#067647

Entregado y a tiempo

Morado Separación

#5B3CC4

En separación en el CD

Rojo Fallo

#B42318

Retraso e intento fallido

Tipografía

Space Grotesk

700

Títulos y números de indicador

Inter

400 / 500 / 600 / 700

Interfaz, tablas y formularios

JetBrains Mono

400 / 700

Códigos de pedido y horarios

12

Próximas versiones

Lo que viene a continuación en el roadmap del producto:

Ruteo
Sugerencia del orden de paradas por ventana, peso y capacidad del vehículo
Portal del cliente B2B
Seguimiento de sus propios pedidos y comprobantes
Aviso al destinatario
Enlace de rastreo y previsión de llegada por WhatsApp
Comprobante en el portal
Foto, firma y ubicación de cada entrega disponibles para el cliente
13

Referencias y créditos

La base técnica de LogiFlow es FTGO, de Chris Richardson y Eventuate, Inc., publicado bajo la licencia Apache 2.0.

14

Aprendizaje

Diseñar sobre una arquitectura real cambia la interfaz: la consistencia eventual se vuelve un estado “en proceso”, la compensación de la saga se vuelve un motivo de rechazo, y la separación entre lectura y escritura define dónde viven las listas y los informes.