
LogiMatch
Del pedido al mapa del conductor: rutas optimizadas, asignación inteligente y seguimiento en tiempo real.
Coordinar pedidos, flota y entregas con planillas y mensajes sueltos genera rutas ineficientes y entregas fuera de horario. LogiMatch centraliza el proceso: recibe pedidos, arma rutas según capacidad, prioridades y ventanas horarias, y sugiere el conductor más conveniente para cada entrega. El equipo sigue el avance desde un panel y el conductor recibe su recorrido en el móvil, con mapa y actualizaciones en tiempo real. Así se detectan demoras antes de que ocurran y se reprograma lo necesario sin perder trazabilidad.
- .NET 9
- ASP.NET Core
- C#
- EF Core
- SQL Server
- React 19
- TypeScript
- Tailwind CSS
- SignalR
- Google OR-Tools
- OpenRouteService
- Docker
- GitHub Actions
Imágenes del proyecto






Qué lo hace interesante
Planificación CVRPTW con OR-Tools
El preview toma todos los envíos pendientes, arma el problema de ruteo con capacidad, ventanas horarias y un horizonte de 12 horas con OpenRouteService. Luego Google OR-Tools decide qué vehículo sirve cada envío y en qué orden, con un costo de arco ponderado por prioridad y sin descartar envíos de forma silenciosa ya que los envíos y conductores no viables aparecen apartados con su motivo.
Asignación de conductores con scoring
Cada candidato se filtra primero por factibilidad de ventana horaria y capacidad, y luego se rankea con siete métricas normalizadas: entregas exitosas del día, envíos pendientes, en progreso, distancia, duración, capacidad libre y costo estimado de operación. El costo combina salario, consumo, combustible, mantenimiento y peajes, y la política de elegibilidad evita que los umbrales recorten la flota por debajo de la carga a transportar. Cada descarte se explica con su motivo y su score.
Riesgo de demora y prioridad automática
Un job recurrente de Hangfire recalcula cada 10 minutos el riesgo de demora del envío actual de cada ruta activa combinando holgura de la ventana, velocidad implícita restante y envíos en cola, y lo expone como índice 0–100 en el dashboard. En paralelo, un scoring del dominio recalcula la prioridad de los envíos pendientes ante altas, cancelaciones de ruta y fallos de entrega. Así la operación prioriza por urgencia real y no por orden de carga.
Panel del conductor en tiempo real
La vista mobile-first usa React Leaflet con OpenStreetMap, geolocalización por `watchPosition` y SignalR para recibir rutas asignadas o canceladas sin recargar. Las paradas se ordenan con una política de secuencia del dominio y las acciones respetan la máquina de estados del envío (iniciar, detener, reanudar, llegar, registrar intento). Un bottom sheet con Vaul y modales accesibles mantienen los controles al alcance del pulgar.
Arquitectura
LogiMatch implementa una variante de Clean Architecture con una regla de dependencia estricta: API → Application → Domain, mientras Infrastructure implementa las abstracciones que Application declara. El repositorio separa `src/Domain`, `src/Application`, `src/Infrastructure`, `src/API`, los proyectos de test y `front/`; Domain no conoce EF Core, ASP.NET ni JSON, y los controladores no contienen lógica de negocio. FluentValidation valida cada request y la inyección de dependencias se registra por capa.
src/Domain/Entidades ricas, value objects y enums. Concentra invariantes, la máquina de estados del envío, la política de secuencia de paradas, los cálculos puros de scoring, costos de operación y riesgo de demora, sin dependencias externas.
src/Application/Casos de uso por agregado que orquestan validación, repositorios e IUnitOfWork. Declara los contratos de persistencia e integraciones externas, los DTOs y el modelo del problema de ruteo (CVRPTW).
src/Infrastructure/Implementaciones EF Core (DbContext, configuraciones, repositorios, migraciones e interceptor de auditoría), clientes de OpenRouteService, email con MailKit, solver OR-Tools y seed de datos demo.
src/API/Composición raíz y entrada HTTP: controladores REST, Identity + JWT, policies AdminOnly/DriverOnly, hub de SignalR, manejo global de excepciones, OpenAPI/Scalar, health checks y jobs de Hangfire.
Frontend
React 19 + TypeScript + Vite con Tailwind CSS, React Router 7 con guards por rol, Zustand para la sesión y un cliente `fetch` tipado con `ApiError`. La organización es por features (`auth`, `admin/dashboard|orders|shipments|routes|route-planning`, `driver/home`), con `components/ui` como design system, `hooks`, `lib` (tipos, formato y realtime) y `config`. El panel del conductor suma Leaflet, SignalR, geolocalización y Vaul; el build verifica TypeScript y Oxlint.
Características principales
- Pedidos y envíos: alta de pedidos con items, peso, precio y ventana horaria; cada pedido genera un envío con prioridad calculada automáticamente.
- Máquina de estados del envío: Pending → InProgress → Stopped → Arrived → Finalized/DeliveryFailed/Cancelled, con hasta 3 intentos separados por 5 minutos e historial de cada transición.
- Planificación de rutas: preview read-only de todos los pendientes con selección driver → vehículo y depósito opcional, propuesta óptima y commit que persiste las paradas en el orden planificado.
- Sugerencia y reasignación de conductores: ranking explicable por factibilidad, capacidad, distancia, carga y costo de operación, con soporte para cancelar y reprogramar una ruta completa.
- Panel del conductor: mapa con ubicación y paradas, pedido actual con acciones por estado, próximos envíos y cancelación de ruta con reprogramación automática y aviso por email a administradores.
- Monitoreo operativo: dashboard con envíos pendientes, prioridad urgente y riesgo de demora, más catálogos de clientes, vehículos y depósitos activos para la planificación.
- Seguridad y roles: Identity + JWT con claims y policies que separan la administración de la operación en terreno; secretos fuera del repositorio y CORS restringido por origen en producción.
Calidad y despliegue
- Testing con xUnit 2.9, Moq y coverlet: más de 550 casos sobre reglas de dominio, servicios, validadores, clientes ORS y solver. La suite de integración usa WebApplicationFactory contra SQL Server real, dobles de geocoding/routing/email y un servidor SMTP falso.
- C# con nullable e implicit usings, FluentValidation en cada request y un handler global que mapea excepciones a 400/404/409/500. El frontend usa TypeScript estricto y Oxlint (`pnpm lint`, `tsc -b` + Vite en `pnpm build`), aunque esa verificación todavía corre local y no en CI.
- CI en GitHub Actions con dos jobs: build-and-test (restore, build Release, unit tests e integration tests con SQL Server 2022 como service container, artefactos TRX) y docker-build (valida la imagen multi-stage de la API).
- Deploy: entorno reproducible con Docker Compose (API .NET en :8080 + SQL Server 2022 con volumen y healthcheck en `/health`). El workflow de despliegue a Oracle Cloud VM y Vercel está preparado pero deshabilitado a propósito; todavía no hay URL pública.
¿Querés ver el resto?
Explorá otros proyectos donde aplico buenas prácticas de arquitectura, rendimiento y experiencia de usuario.
Ver todos los proyectos