Case study 01
Construction ERP. An operating system for fit-out contractors.
Fit-out companies run several projects and sites at once. This system is the single source of truth for operations, finance, human resources, and an assistant that answers from live data inside the user’s role.
- Sector
- Construction and interior fit-out
- Type
- Multi-project ERP with an in-product assistant
- Role
- End-to-end owner: product, architecture, backend, frontend, assistant, and delivery
The business problem
- Tender pricing, bills of quantities, and contracts sit apart from execution.
- Change orders, client certificates, and subcontractor claims are not tied to cost or cash.
- Material requests, quotes, purchase orders, and store movements are not one chain.
- Attendance, leave, and payroll are manual, with no link to the site or an approval path.
- Finance does not see the same project picture as operations.
What the platform changes
One source for the project
From the client, contract, and bill of quantities through change orders, schedule, cost, certificates, and collection.
Approval before execution
Sensitive documents do not move into operations until the role’s approval path is complete.
Site and office
Site diaries, inspections, petty cash, daily work, and subcontractors.
Procurement and stores
Supplier, request, quote comparison, purchase order, item, warehouse, and movement.
Project finance
Chart of accounts, journals, vouchers, cheques, bank reconciliation, and receivables and payables.
HR on the job
Employees, attendance inside the site geofence, leave balances, published payroll, and self-service.
The assistant
It does not invent figures or project codes. An operational answer comes from tools that read the system. A write waits for a preview and confirmation, then it is stored through the same rules and written to the audit log. The server refuses a tool the role cannot use.
Operations
Search projects, tenders, and bill lines. Open the user’s own approvals. Draft a site diary, material request, or lead, and save only after confirmation. Read an Excel file and import material prices after confirmation.
Leadership
Project status, tenders, waiting approvals, and contract value. Cost alerts: purchase-order exceptions, guarantees nearing expiry, store issues not yet costed, and pending change orders. Budget against actual, from the same data.
System workflow
The interface never connects to the database. The assistant uses the same session and the same permissions.
- 01Office, site, and leadership
- 02Web app and in-app assistant
- 03ASP.NET Core API /api/v1
- 04PostgreSQL
Browser to Next.js, then the API, then the database. The assistant calls the same API.
Project cycle
- Tender and bill of quantities
- Live project
- Variations
- Certificates
- Cost and cash
Technical architecture
| Frontend | Next.js 16, React 19, TypeScript, Tailwind CSS 4, Arabic RTL and English |
|---|---|
| Auth | Web session, JWT on the API |
| Backend | .NET 10, ASP.NET Core, Clean Architecture |
| Data | PostgreSQL, EF Core |
| Assistant | In-app chat, tools on live data, confirmation before writes, audit log |
| Ops | Docker on AWS, health checks, structured logs |
What I owned
- Business scope: projects, tenders, site, procurement, finance, and HR.
- The boundary: data and rules live behind the API only.
- Approval paths, and the scope of company, sector, and role.
- The assistant: instructions, role-scoped tools, confirmation, and the audit log.
- Arabic and English, on mobile and desktop.
- Release order: database, then API, then web. Egyptian rules in this release: certificates, Cairo-time attendance, and leave deducted on approval.