Lo Pedis Lo Tenes
Sistema completo para un negocio de importación: catálogo público con pedidos por WhatsApp y panel admin con stock, pedidos, envíos, finanzas y roles.

- endpoints de API
- 40
- pantallas
- 23
- modelos de datos
- 10
- líneas de TypeScript
- +20.000
El problema
Un negocio de importación necesitaba ordenar su operación: catálogo, stock, pedidos de clientes, envíos desde Paraguay y finanzas en dos monedas. Todo vivía en planillas y chats de WhatsApp, sin una vista clara de qué había en stock, qué estaba pago y en qué envío venía cada pedido.
La solución
Construí un sistema con dos caras. Los clientes navegan un catálogo público sin registrarse, arman su carrito y el pedido llega al WhatsApp del negocio con todo estructurado. Del otro lado, un panel privado concentra productos, stock, pedidos, bultos de envío, importaciones y finanzas, con roles para cada integrante del equipo.
Qué incluye
- Catálogo público con categorías, banners editables y carrito que genera el pedido por WhatsApp
- Stock con alertas de mínimo y actualizaciones seguras ante cambios simultáneos
- Pedidos con estado por producto: el estado del pedido se calcula solo
- Estado de pago automático (debe, seña, pagado) según los ingresos registrados
- Bultos con courier y tracking: reparte el costo de envío entre productos y avisa a cada cliente por email
- Finanzas en USD y ARS, importaciones, distribuidores y reportes
- Carga masiva de productos por CSV con validación previa antes de guardar
- Roles de equipo, papelera con recuperación y backups automáticos
Arquitectura
Next.js 16 con App Router y Server Components. PostgreSQL con Prisma, autenticación con NextAuth v5 (credenciales + JWT) y control de acceso por roles en el servidor. Imágenes en Supabase Storage. Despliegue en Railway con Docker multi-stage, reinicio automático ante fallas y backups con retención configurable.
Decisiones técnicas
Estado de pedido calculado, no cargado a mano
Los productos de un mismo pedido pueden llegar en envíos distintos. En vez de pedirle al equipo que actualice el estado general, el sistema lo deriva del producto más atrasado. Se eliminan errores y trabajo repetido.
Precios con motor de cálculo
El precio final sale del costo en USDT, la comisión, el envío, la ganancia (porcentaje o monto fijo) y las cotizaciones del día. El cálculo se protege contra tasas inválidas para que nunca se guarde un precio roto.
Cero pérdida de datos por error humano
Los borrados son lógicos: todo pasa por una papelera y se puede recuperar. Sumado a backups con retención, un click equivocado no es un problema.
Stock a prueba de simultaneidad
Las modificaciones de stock bloquean la fila en la base de datos mientras se actualizan, para que dos personas editando al mismo tiempo no pisen los números del otro.
Seguridad pensada desde el inicio
Rutas sensibles con límite de peticiones, validación de entradas, permisos por rol verificados en el servidor y contraseñas con hash.
Pruebas automatizadas en lo que más duele si falla
Precios, importación CSV, interpretación de pedidos de WhatsApp y carrito tienen tests unitarios (Vitest), y los flujos críticos tienen tests end-to-end (Playwright).
Resultados
El negocio pasó de planillas y mensajes sueltos a un solo sistema en producción: sabe qué tiene en stock, qué pedidos están pagos, señados o adeudados, y en qué bulto viaja cada producto. Cuando un bulto sale, cada cliente recibe por email su número de seguimiento sin que nadie lo escriba a mano.
¿Necesitás algo así para tu negocio?
Contame qué querés ordenar o vender y te respondo con una propuesta de precio y plazo.