Skip to content
Pablo Pulido

Control de Horas

Real client

Working-hours management application built for a construction and painting company, with business rules and validations tailored to its needs.

React · Java · Spring Boot · PostgreSQL

The «Resumen mensual» (monthly summary) screen of Control de Horas with fictitious data: hours and days worked by each worker in October 2026, broken down by site, with the «Por trabajador» and «Por obra» tabs.
The «Parte diario» (daily report) screen of Control de Horas with fictitious data: date and site selectors, and a table with each worker's hours, their hours on other sites that day and a notes field.

Real screenshots of the application, using fictitious demo data

Context and problem

A company in the construction and painting sector needed to manage its staff's working hours, until then tracked in a spreadsheet, with rules and validations suited to its activity.

Solution

A web application with a React interface and a Java Spring Boot backend, storing its data in PostgreSQL. It records each worker's hours by site and day, with a monthly view and summaries by worker and by site.

Architecture

The React interface talks to the Spring Boot backend, which applies the business rules and stores the data in PostgreSQL. User sessions are kept on the server.

Conceptual application diagram: React interface, Spring Boot backend with business rules and server-side sessions, and a PostgreSQL database.ReactUser interfaceSpring BootBackend and business rulesServer-side sessionsPostgreSQLDatabase
Conceptual diagram

Technical decisions and challenges

  • Backend validation

    Spring Boot validates the duration and date rules on the server (15-minute intervals, at most 24 hours a day per worker and no future dates) and PostgreSQL adds data constraints, to keep every entry consistent.

  • Working-day management

    Hours are recorded by worker, site and day, in 15-minute intervals and with an optional note. If a worker's daily total exceeds 12 hours, the application asks for confirmation.

  • Server-side sessions

    Spring Security handles authentication, and sessions are stored in PostgreSQL through Spring Session, with idle and absolute expiry.

Outcome

Application built for a real client and ready for rollout, with the company's specific business rules and validations implemented.