Sistema de gestión empresarial con módulos de inventario, ventas, compras y contabilidad. Combina una API en Rust con una interfaz React y un cliente TypeScript, manteniendo el contexto de cada empresa en sus operaciones.
El problema
Los pedidos, las existencias y la contabilidad necesitan mantenerse coordinados, mientras los datos y permisos de cada empresa permanecen separados.
La solución
Monolito modular organizado en crates de Rust, con Axum y SQLx. PostgreSQL aplica políticas de acceso por fila dentro de transacciones con contexto de empresa. Los módulos conectan reservas de stock, despachos y asientos contables; React consume la API mediante un SDK TypeScript.
Del pedido al movimiento contable
El ciclo de una venta conecta documentos, reservas y movimientos de inventario. La contabilización automática depende de las cuentas configuradas para la empresa.
- PedidoCliente · productos · almacén
- ConfirmaciónReserva de stock
- DespachoSalida de existencias
- ContabilizaciónSi hay cuentas configuradas
Crear el pedido
React · SDK TypeScript · Rust
El pedido reúne cliente, productos, cantidades y almacén. La API valida los datos y calcula sus importes.
Confirmar y reservar
SQLx · PostgreSQL
La confirmación reserva las existencias necesarias y comprueba su disponibilidad dentro de una transacción.
Despachar y registrar
Inventario · movimientos de stock
El despacho descuenta las existencias y las reservas, registra los movimientos y actualiza el estado del pedido.
Conectar con contabilidad
Partida doble · contexto de empresa
Si existen las cuentas configuradas, el sistema prepara el asiento contable en la misma transacción del despacho. Las operaciones mantienen el contexto de empresa.
Stock trazable
Las reservas y movimientos permiten seguir el efecto de la venta sobre el inventario.
Registro contable
Los asientos conectan la operación comercial con las cuentas y los informes financieros de la empresa.
Los retos detrás del sistema
Conservar el contexto de empresa en cada operación
Las transacciones aplican el contexto del tenant antes de consultar o modificar datos. Las políticas RLS de PostgreSQL utilizan ese contexto para limitar el acceso a las filas de cada empresa.
Coordinar stock y contabilidad
La confirmación reserva existencias y el despacho descuenta stock y registra movimientos. Cuando la empresa tiene sus cuentas configuradas, el despacho genera también el asiento contable dentro de la misma transacción.
Qué permite hacer
- Inventario multi-almacén, movimientos y reservas de stock.
- Pedidos de venta, compras y gestión de clientes y proveedores.
- Contabilidad de partida doble, cobros, pagos e informes financieros.
- Aislamiento de datos por empresa y permisos por rol.
- Cliente TypeScript, API documentada con OpenAPI y despliegue Docker.
