Project overview
An ERP for a firm running many construction projects at once. It connects site attendance, daily and monthly wages, materials, drawings and documents, and client billing, with a separate portal view for each type of participant.
The challenge
Each project kept its own spreadsheets for attendance, wages and bills. Leadership had no consolidated view of project financials or workforce cost, and preparing a client bill meant collecting figures from several people.
The approach
We identified the seven kinds of people involved in a project — administrators, site engineers, supervisors, contractors, consultants, workers and clients — and designed what each needs to see and do. Attendance and payroll were built first, because every other figure depends on them.
The architecture
- Next.js (App Router) front end with role-based portals
- Python FastAPI back end
- PostgreSQL for projects, attendance, payroll and billing
- MinIO object storage with presigned URLs for drawings and documents
- Redis for caching; Docker for deployment
- Google Sheets API for automated client ledgers
The product
Site teams record attendance daily. The payroll engine calculates daily and monthly wages. Documents and drawings are stored per project with controlled access, and client ledgers are generated automatically for billing.
Key features
- Role-based portals for seven participant types
- Daily attendance and wage calculation
- Project documents and drawing storage
- Automated client ledger generation
- Materials and stock tracking
- Project-level financial overview
UX decisions
- Attendance entry is designed for supervisors on a phone at the site gate.
- Every participant sees only their projects and their own actions.
Technology
- Next.js
- FastAPI
- PostgreSQL
- MinIO
- Redis
- Docker
- Google Sheets API
Deployment
Containerised deployment with object storage for documents and scheduled jobs for payroll and ledger generation.
Outcome
Project financials, workforce costs and client billing now come from the same records. Supervisors capture attendance once and payroll and billing follow from it.








