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.
