Master data
One catalogue behind every module — products with units and barcodes, customers with credit limits and payment terms, suppliers, manufacturers, warehouses down to zone and bin, price lists, currencies, and the public-holiday calendar. Bulk CSV import for every entity.
- Products, customers, suppliers
- Credit limits and payment terms
- Warehouses, zones, bins, price lists
- Bulk CSV import with row-level validation
Master data is the vocabulary the rest of the system speaks. A product exists once; Sales, Inventory, Procurement, and every pack refer to that one record rather than keeping their own copy.
What is in it
- Products with unit of measure, barcode, and category
- Customers with credit limits, payment terms, and categories
- Suppliers and manufacturers
- Warehouses, and the zones and bins inside them
- Price lists, currencies, and the public-holiday calendar
Every entity imports from CSV in bulk, validated row by row, so a first-day migration off spreadsheets does not become a month of typing.
How Master data fits the rest of the system
Bounded
The module owns its tables and its service interface. Other modules reach in only through services and async events — never SQL.
Test-vector verified
Every domain rule has two implementations — Dart and Java — and a single shared test vector. CI fails on any divergence.
Audit-logged
Every command writes an entry to the append-only audit log with a chain hash. The daily verifier proves the log has not been tampered with.