Motor WMS reutilizable (dominio + persistencia) para Protección Civil y ayuda humanitaria — válido para cualquier sector. Gestión de almacén y logística de material: recepción, salida, traslados, kardex (libro mayor de movimientos), FEFO por caducidad, recuentos, reservas, contenedores (palet/caja/lote), capacidad de transporte y expediciones, y flota (vehículos como almacén móvil con capacidad de carga, manifiesto y kits de misión).
Son paquetes independientes que cualquiera puede embeber. Los consumen OpenDepot (la app WMS open-source de referencia) y ResponseGrid — y cualquier otro host. El HTTP, la auth y la UI los pone cada consumidor.
| Paquete | Qué es |
|---|---|
packages/warehouse-core — @globalemergency/warehouse-core |
Dominio puro (sin infraestructura): agregados, value objects y servicios. El motor. |
packages/warehouse-postgres — @globalemergency/warehouse-postgres |
Adaptador de persistencia Postgres/Drizzle: esquema wms., repos y migraciones. |
- Dominio puro (
warehouse-core): sin NestJS, sin Drizzle, sin red ni disco. La persistencia y el HTTP los pone cada host. - Tenencia opaca (
ScopeId): el núcleo no conoce sectores; el host traduce su identidad de tenant (organización, emergencia, centro) a unScopeId. - Hexagonal / DDD: puertos en el dominio, adaptadores en
warehouse-postgres.
pnpm install
pnpm build # build dual CJS+ESM de los paquetes
pnpm test # tests de dominio (node --test)
pnpm test:int # tests de integración de persistencia (requiere Postgres)
pnpm typecheckLos tests de integración usan un Postgres real vía TEST_DATABASE_URL.
AGPL-3.0-only. Las obras derivadas —incluidos los despliegues en red/SaaS modificados— deben permanecer open source bajo la misma licencia.