Enterprise software
Enterprise software is mostly about boundaries: who may do what, to whose data, and how anyone can later prove what happened.

Permissions that match the organisation
A role check hard-coded in a controller stops working the day a customer asks for a slightly different role. In OrderRestro every action sits behind a granular permission that can be toggled on its own. The construction ERP goes further: eleven project roles plus a data-driven permission matrix, so a change in who may approve a requisition is configuration, not a release.
Multi-company and multi-branch
Rechvix is multi-company, multi-branch and multi-warehouse from the first migration. Every tenant table carries an organisation identifier, protected by PostgreSQL row-level security and again by the repository's own SQL. Permissions can be scoped to a branch or a warehouse. Adding that later to a single-tenant schema is one of the most expensive rewrites in this field, so I do it first.
Approval workflows
In the construction ERP a material request is approved, becomes a purchase order, is received against a goods receipt note and finally consumed against a milestone. Each step has an owner, and delivered, accepted and rejected quantities are recorded separately so a dispute can be traced to a document.
Inventory, accounting and financial state
Stock is a ledger of movements, and a balance is derived from it. Accounting is double-entry with every journal balance-enforced, so a partial write cannot leave the books out of balance. Finalising a document is atomic across stock, ledger, tax and numbering. These are the properties an auditor looks for, and they are far easier to build in than to retrofit.
Auditability
The construction ERP has an append-only audit log of logins, permission changes and security events. Rechvix records audit entries inside the same transaction as the change they describe, so the log cannot disagree with the data.
Background processes and integrations
Anything slow or external belongs outside the request. Rechvix runs an outbox consumer and scheduled jobs in a separate worker, and its government e-Invoice and e-Way Bill calls sit behind a provider interface with retry loops. The construction ERP sends notifications through a Redis-backed job queue.
Reporting
Reports read from the same ledgers the transactions write to. In Rechvix the trial balance is live and always balanced because it is computed from the journal and not stored separately.