Projects
Plan, staff, cost, and bill work that runs over months. Phases and tasks, a team, timesheets that drive costing, versioned budgets tracked against actuals, project expenses, change orders, and billing by time-and-materials, fixed price, or milestone.
- Phases, milestones, tasks
- Timesheets feeding cost and billing
- Versioned budgets, budget vs actual
- T&M, fixed-price, and milestone billing
Some work does not fit an invoice line. A fit-out, an installation contract, a service engagement — these run for months, absorb labour and expenses, and get billed in stages. That is what Projects is for.
What is in it
- Work broken into phases, milestones, and tasks
- A project team with rate cards per role
- Timesheets that feed both cost and billing
- Versioned budgets, tracked budget against actual
- Project expenses and change orders
- Billing by time-and-materials, fixed price, or milestone
A project bills into the same Sales invoice and the same ledger as everything else. It is a way of organising work, not a second set of books.
How Projects 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.