Departments run themselves. The numbers still agree.
Financials, HR and payroll, logistics and inventory, maintenance and depot management on one database — with each department seeing only what it should.
Delivered in phases, scoped to your organisation. Not an off-the-shelf download.
Modules never write the ledger. They emit events; Financials is the only writer. That one rule prevents most ERP data-integrity failures.
The five modules
Each owns its own tables and exposes a contract. None of them reaches into another's data — which is what lets a module be split onto its own server later without a rewrite.
Financials
General ledger, accounts payable and receivable, budgets by department, and the posting service every other module feeds. Trial balance, P&L, budget versus actual.
HR & Payroll
Employee lifecycle from hire to retirement, payroll runs that post to the ledger, travel and daily allowance claims, and pension accounts. Calculate, approve and post are separate permissions.
Logistics & Inventory
Items, warehouses, stock levels and reorder points, with QR-tagged assets tracked individually. Scans work offline and sync when the phone reconnects.
Repair & Maintenance
Reactive work orders raised from a scan, and preventive plans that generate their own. Parts consumed deduct stock and post their cost automatically.
Depot Management
Custody and movement of assets between depots, with approval on cross-department transfers and a full movement history retained for audit.
Configuration
Custom fields per entity, status workflows with permission-gated transitions, and roles composed in-app rather than in code. Modules switch on and off per department.
The decisions behind it
Written up as an architecture reference a review board would accept — with the reasoning, not just the diagram.
Modular monolith, not microservices first
Five tightly coupled domains where inventory posts to financials and payroll posts to the ledger. Distributed transactions across services would eat the engineering budget on day one. Strict module seams give you the option to split later — flip one adapter, no logic rewrite.
Isolation enforced in one place
Every table carries a tenant id, and every read and write goes through one scoped data layer that adds it — module code never writes its own cross-tenant SQL. That is the whole mechanism: not a rule each of forty queries has to remember, but one function they all call, with tests that try to read another tenant’s ledger through it and fail.
Transactional outbox
An event is published if and only if its transaction commits. This removes the whole class of bugs where the data was written but the message never went — or worse, went twice.
Separation of duties, enforced
Payroll calculate, approve and post are different permissions and the same person cannot do two of them. Roles can only grant permissions the granter already holds, so nobody escalates themselves.
Diagrams, DDL for the core tables, the endpoint map, RBAC logic and the phased roadmap.
How it gets built
In phases, so you get working modules early instead of everything at once and nothing for a year.
Phase 0 is complete and running: authentication, tenant isolation with tests that attempt a cross-tenant read and are refused, hierarchical RBAC, the audit interceptor and the outbox relay. Everything after it is quoted against your scope.
Engagement
Discovery
Before anyone commits to a build. We map your departments, approval chains, reporting obligations and what your existing systems already do well.
- Workshops with each department
- Module and phase recommendation
- Written scope, timeline and fixed quote
- No obligation to proceed
First phase build
Starting figure for one module phase on the existing foundation. The full programme is quoted against scope after discovery.
- Foundation deployed on your infrastructure
- One module built, tested and in use
- Your roles, departments and approval chains
- Data migrated from what you use now
- Admin and end-user training
- Support through the next phase
Staged payments by bank transfer against phase milestones.
Staged payments by bank transfer against phase milestones.
Enquire → Open the ERP →Tell us how your organisation actually works
ERP projects fail when the software decides how you should operate. Discovery comes first for a reason.