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


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.
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.