ModalB

Technical details

Construction site reporting — architecture and technical choices

The application in detail: the four modules, the costing model, the versioned approval workflow, the application architecture and the delivery pipeline.

This page extends the case study Site reporting application for the construction industry, which describes the project without going into the technical detail.

The four modules

Daily reports. A form structured in six sections — in-house staff, agency staff, owned plant, hired plant, subcontracting, materials purchases. Each line is backed by a unit price reference that costs it as it is entered, with subtotals per section and an overall total. Entering negative quantities makes it possible to correct a report that has already been closed, without reopening it or breaking the history.

Versioned approval workflow. Three levels — site manager, works supervisor, administrator. Each approval creates a new version chained to the previous one: the full history remains available, and fields lock according to the role and the stage reached. When a higher-level profile enters the report themselves, shortcuts avoid pointless self-approvals.

Summaries. Consolidation of costs per site over a chosen period, and an hours statement per employee separating day, night, weekend, weather stoppages and travel zones.

Reference data and exports. Administration of sites, staff, plant, suppliers, agencies and rate tables; eight filterable CSV exports, intended for payroll and invoicing tools.

The application architecture

A React 18 / TypeScript front end — Vite, Material UI, RxJS — designed for desktop as well as tablet use, and a Java / Spring Boot back end exposing a REST API over a PostgreSQL database.

The database schema evolves in a versioned, automated way through Flyway: each migration is a versioned file in the repository, applied at deployment, which makes the state of the database reproducible from one environment to the next.

Authentication and permissions

Authentication and role management rest on Microsoft Entra ID with OAuth2 / OpenID Connect. Staff sign in with their company account, with no dedicated application password to manage.

Permissions are enforced on the client and on the server: the interface hides what is not accessible, but the API is the authority — a direct call bypasses nothing.

Traceability

Sensitive data is never physically deleted, only deactivated. A closed site, an employee who has left or a superseded rate remains referenceable by past reports, which therefore keep their meaning years after they were closed. Combined with the versioning of approvals, this rule makes the whole auditable.

Industrialisation

The whole is containerised with Docker and covered by an automated test suite on the back end.

Deployment goes through a GitLab continuous integration pipeline, onto isolated test and production environments hosted in France.

Technologies

  • React / TypeScript
  • Material UI
  • Java / Spring Boot
  • PostgreSQL
  • Flyway
  • Microsoft Entra ID
  • Docker
  • GitLab CI

Expertise involved

A comparable architecture to design?

We work from scoping through to production.