Saltar al contenido
Pablo Pulido

Control de Horas

Cliente real

Aplicación de gestión de jornadas laborales desarrollada para una empresa de construcción y pintura, con reglas de negocio y validaciones adaptadas a sus necesidades.

React · Java · Spring Boot · PostgreSQL

Pantalla «Resumen mensual» de Control de Horas con datos ficticios: horas y días trabajados por cada trabajador en octubre de 2026, desglosados por obra, con las pestañas «Por trabajador» y «Por obra».
Pantalla «Parte diario» de Control de Horas con datos ficticios: selector de fecha y de obra, y una tabla con las horas de cada trabajador, sus horas en otras obras ese día y un campo de observación.

Capturas reales de la aplicación con datos de demostración ficticios

Contexto y problema

Una empresa vinculada a la construcción y la pintura necesitaba gestionar las jornadas laborales de su personal, que hasta entonces se controlaban en una hoja de cálculo, con reglas y validaciones adaptadas a su actividad.

Solución

Aplicación web con interfaz en React y backend en Java con Spring Boot, que guarda los datos en PostgreSQL. Registra las horas de cada trabajador por obra y día, con vista mensual y resúmenes por trabajador y por obra.

Arquitectura

La interfaz React se comunica con el backend Spring Boot, que aplica las reglas de negocio y guarda los datos en PostgreSQL. Las sesiones de usuario se mantienen en el servidor.

Diagrama conceptual de la aplicación: interfaz React, backend Spring Boot con reglas de negocio y sesiones en el servidor, y base de datos PostgreSQL.ReactInterfaz de usuarioSpring BootBackend y reglas de negocioSesiones en el servidorPostgreSQLBase de datos
Diagrama conceptual

Decisiones técnicas y desafíos

  • Validaciones en el backend

    Spring Boot valida en el servidor las reglas de duración y de fechas (intervalos de 15 minutos, máximo de 24 horas al día por trabajador y sin fechas futuras) y PostgreSQL añade restricciones sobre los datos, para mantener la consistencia de los registros.

  • Gestión de jornadas

    Las horas se registran por trabajador, obra y día, en intervalos de 15 minutos y con una observación opcional. Si el total diario de un trabajador supera las 12 horas, la aplicación pide confirmación.

  • Sesiones en el servidor

    Spring Security gestiona la autenticación y las sesiones se almacenan en PostgreSQL mediante Spring Session, con caducidad por inactividad y absoluta.

Resultado

Aplicación desarrollada para un cliente real y preparada para su puesta en marcha, con las reglas de negocio y validaciones específicas de la empresa implementadas.