Saltar al contenido
Idioma: en

Menú

DistribuciónCliente

Roleo · Distribuidora

Una distribuidora mayorista pasó de un sistema viejo de escritorio a preventa en el celular que funciona sin señal, reparto, cuenta corriente y un panel de administración.

El problema

Los vendedores salen a la calle sin señal, el sistema que usamos es viejo y la mitad de lo que tiene no lo usamos.

La solución

Relevé qué se usaba de verdad del sistema anterior, migré sus datos y construí una PWA de preventa y reparto que trabaja sin conexión y se sincroniza sola, más un panel de administración y un catálogo público, todo en una infraestructura con deploys automáticos.

Impacto

  • Los vendedores toman pedidos sin señal y la venta se sube sola al volver la conexión, sin duplicarse.
  • 2.236 clientes, 13 rutas y 963 artículos migrados desde el sistema anterior.
  • Seis fases en producción, cada una con su PR, CI y deploy automático.

Mi rol

Relevamiento, diseño, desarrollo, migración de datos e infraestructura

DiseñoFrontBackInfra y DevOpsDatos

Herramientas

ReactPWAIndexedDB (Dexie)ExpressSequelizePostgreSQLRailwayGitHub Actions
El galpón de chapa de galpón, con dos bultos y el pedido naranja arriba

De este caso nació

galpón

Vendé en la calle. Cobrá en la ruta.

El vendedor toma el pedido en la calle aunque no haya señal, el repartidor entrega y cobra, y la oficina arma el camión y factura. Del pedido a la factura, sin papeles en el medio.

galpon.app

El contexto

Roleo es una distribuidora mayorista que trabaja con preventa: el vendedor visita al cliente y toma el pedido, y otro día el repartidor lo entrega. Usaban un sistema de escritorio (ASP.NET con frames) con módulos de compras, ventas, cuentas corrientes, cheques, liquidaciones y más.

Lo que dolía

  • En los pueblos y en las rutas no hay señal, y el pedido se tomaba igual en papel o de memoria.
  • El sistema tenía de todo, pero en la práctica se usaban artículos y precios, la preventa y las rutas. Las facturas de venta estaban en cero desde 2024 y las cuentas corrientes, vacías.
  • Armar el reparto del día dependía de exportar planillas a mano.

Las decisiones

Relevar antes de construir. Recorrí el sistema viejo en modo lectura para ver qué se usaba de verdad. Eso definió el alcance: reemplazar lo que se usa y sumar como práctica nueva lo que faltaba, como la cuenta corriente. No se migró todo lo que existía.

Offline primero, con una cola que no duplica. El celular guarda cada pedido en una cola local y la sube en orden cuando hay señal. Cada operación lleva un identificador generado en el celular y el servidor es idempotente: reenviar nunca duplica. El precio lo decide siempre el servidor.

PWA en vez de app nativa. Había una app en React Native, pero casi no usaba funciones nativas y mantenerla era caro. Todos los vendedores usan Android con Chrome, así que una PWA instalable resolvía lo mismo con mucho menos costo.

Infraestructura como código desde el día uno. Postgres, bucket de archivos y cuatro servicios definidos en código, con CI en cada PR y deploy automático al mergear.

Lo que se construyó

  • PWA del vendedor: ruta del día, clientes, pedidos, cobranza y escáner con la cámara trasera.
  • PWA del repartidor: hoja de ruta, entregas con devoluciones y cobro en el momento.
  • Panel de administración: artículos, listas de precios, reparto, cuenta corriente, comisiones, facturación interna y reportes.
  • Catálogo público con contacto por WhatsApp.
  • Migración de datos con un script idempotente que se puede volver a correr.

Qué aprendí

Lo más valioso del proyecto fue el relevamiento: cuando se mira cómo trabaja la gente, el alcance se achica a lo que importa.

Más casos

TurismoCliente

Ayum Elun · Recepción

Registramos a cada huésped en una planilla de papel y al final del día no sabemos cuánto entró ni por qué medio.

Una app de recepción instalable que registra al huésped una sola vez, muestra solo los campos del tipo de alojamiento elegido, impide reservas superpuestas desde la base de datos y cierra la caja del día por sector y medio de pago.

  • El huésped que vuelve se encuentra por DNI, apellido o teléfono y sus datos se autocompletan.
  • Extracto diario y mensual por sector (cabañas, apart, hostería, camping) y por medio de pago.
DiseñoFrontBackInfra y DevOpsDatos
Dio origen aTranquera