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.