Works/POS System
POS System
Punto de venta configurable por dominio, con núcleo hexagonal y transacciones atómicas.
- El reto
- Un punto de venta que sirviera igual para ferretería, retail y electrónica, sin forkear el código por cliente.
- La solución
- Núcleo de dominio agnóstico, puertos y adaptadores, Prisma con transacciones atómicas, RBAC y eventos de dominio. Escáner de código de barras y cuenta corriente.
- El resultado
- Un core configurable por metadatos de producto y unidades, con ventas, deuda de clientes y cierre de caja en la misma transacción.
Contexto
Cada negocio llama distinto a lo mismo: unidad, kilo, caja, metro. Un POS cerrado obliga a duplicar el proyecto para cada rubro.
Decisión
El dominio no sabe de Vue ni de Prisma. Los casos de uso orquestan puertos, y la infraestructura implementa esos puertos con Prisma. El cobro, el descuento de stock y la deuda del cliente ocurren en una transacción atómica.
Detalles técnicos
- Arquitectura hexagonal con puertos y adaptadores.
- RBAC para administrador y cajero, verificado en el servidor.
- Eventos de dominio para venta completada y stock bajo.
- Estrategias de pago intercambiables: efectivo, tarjeta y cuenta corriente.
Qué aprendí
La configurabilidad real no está en los formularios: está en el modelo. Si el producto puede describir sus unidades y metadatos, el POS no necesita un if por rubro.
[10] hablemos
¿Tu operación no cierra?
Cuéntame dónde duele: planillas paralelas, stock que no cuadra, procesos que dependen de una persona. Te respondo con un diagnóstico, no con una propuesta a ciegas.