Every year the company has to draw up the work calendar for each workplace and display it somewhere visible (art. 34.6 of the Spanish Workers' Statute): which days are worked, with what hours, and the holidays. Here you build it and check that the hours match the annual working time in your collective agreement.
The hours of every day with a schedule are added up, annual leave is subtracted (at the average hours per day) and the result is compared with the agreed annual working time. If there are hours too many, it tells you how many adjustment days to give off; if there are too few, how many more minutes a day would have to be worked. Closure days count as annual leave.
The national ones and those of your region come from the official publication in the BOE. The two local ones (art. 37.2: fourteen a year at most, two of them local) are up to you: each town council sets them and there is no single source.
Click a working day in the calendar to mark it as a closure of the workplace (a long weekend bridge, Christmas Eve). Click it again to remove it.
Write the staff (one person per line, with their contract hours, whether they don't do nights and the days they are off) and how many people each shift needs. It looks for a rota that covers everything, leaves 12 hours between shifts and two consecutive days off per week, and shares out the hours in proportion to the contract. An integer linear programming engine (HiGHS) solves it in your browser; the result then goes through the same checker as a pasted rota.
In the «Shift rota» tab, paste the rota from your spreadsheet (people in rows, days in columns). Each person is checked against the Spanish Workers' Statute: 12 hours of rest between shifts and 9 ordinary hours a day (art. 34.3), a day and a half of weekly rest that can be accumulated over fourteen days (art. 37.1) and, for night workers, an average of 8 hours a day over fifteen days (art. 36.1). What happened outside the rota is unknown: a rest that starts before the first day or ends after the last one does not count.