In progress

Fichajes

Spanish law requires every employee working day to be recorded and kept for four years. A spreadsheet does not survive an inspection: it leaves no trace of who changed what, or when.


Clocking in has to be the simplest thing in the app

The everyday screen is a single one: current status and one big clock in or out button. The button locks while the request is in flight, so a double click cannot produce a double entry, and the state only changes once the server confirms. Nothing is ever shown optimistically — this is a legal record, it cannot lie.

Three alerts that compute themselves

Every working day is checked three ways: a missing entry, more hours than expected for that weekday, and a continuous stretch above the legal maximum without a break. They are independent and can coincide on the same day. Expected hours are configured per period, so a shorter summer schedule is just another period, not a manual exception.

An audit trail that cannot be lost

Every entry and every edit is recorded by a trigger in the database itself, inside the same transaction as the change. If the audit record cannot be written, the entry is not saved either — a change without a trail simply cannot happen. It stores who, when and why, because any retroactive correction has to be justifiable to an inspector.

Public holidays keep themselves up to date

A weekly job syncs national, regional and local holidays from the Madrid regional open data portal. It never overwrites the ones entered by hand: automation is a convenience, not the only way in. If the external source changes, an alarm fires and the administrator can still work.