Trabajo / Logística, PWA

Sistema de reparto

Los pedidos del día entran como una hoja de cálculo. Salen rutas por zona, una app para choferes que funciona sin señal y una liquidación por zona al final del día.

Mi parte
Diseño, construcción y alojamiento
Cuándo
Abril de 2026 a hoy
Estado
En producción, ahora es un módulo de NEXO

El problema

Los repartos del día salían del ERP como una hoja de cálculo, y ahí terminaba el sistema. Quién llevó qué zona, qué se entregó, qué regresó y cómo se pagó había que armarlo después, a mano.

Lo que construí

El despachador sube el archivo en la mañana. El sistema lo divide en zonas y el despachador asigna a los choferes. El chofer abre la app en su celular y ve las paradas.

En cada parada el chofer marca entregado, parcial o rechazado, y cómo se pagó: efectivo o una de las dos apps de pago locales, con el código QR en pantalla. El celular lo guarda y lo envía cuando vuelve la señal. En Lima hay calles donde no hay.

Al final del día la oficina recibe una liquidación por zona: mercadería que salió, mercadería que regresó, dinero que entró. Se exporta a PDF y después se cierra.

Cómo encaja todo

  1. PersonasDespachador en la app de administración, Choferes en la PWA
  2. En el celularservice worker, base de datos local, bandeja de salida que sincroniza después
  3. Aplicacióndos apps de Next.js, un monorepo
  4. DatosPostgres, Supabase en servidor propio, roles en el token de ingreso

Qué resultó

Medido quiere decir contado en el código o en el sistema. Estimado quiere decir mi propia estimación, con el supuesto al lado.
En producción desdeabril de 2026medido
Commits707medido, nov. 2026
Clientes en un día de reparto90 a 130medido, set. a inicios de oct. 2026
Zonas en un día de reparto5 a 9medido, set. a inicios de oct. 2026
Trabajo de despacho y liquidación ahorrado por semanaunas 5 a 9 horasestimado, 5 a 9 zonas al día, unos 10 minutos menos por zona, 6 días de trabajo

Hecho con

  • Next.js
  • React 19
  • TypeScript
  • Postgres
  • Supabase (self-hosted)
  • Dexie
  • Service worker
  • Leaflet
  • SheetJS
  • pnpm and Turborepo

Cuéntame qué sale mal un martes cualquiera.

Agenda una llamada de 30 minutos

Treinta minutos, por video o por teléfono. Me describes un proceso que te cuesta tiempo. Yo pregunto y te digo con franqueza si lo automatizaría, si primero lo arreglaría o si lo dejaría como está. Sin diapositivas.

Hora de Lima, UTC-5. Respondo en un día hábil, en español, inglés o neerlandés.

Abierto a puestos remotos y a proyectos.