Skip to main content
Schoolyi
School librarian arranging books and planning cards in a bright library

Browse docs

Teaching & schedule

Holidays and working days

Configure weekends, seasonal breaks, and individual holidays, then sync them so every module agrees on which days the school is open.

Teaching & schedule guide for day and boarding schools.

Last updated August 29, 2026

Schoolyi materialises every date in an academic year as its own row, carrying independent flags for weekend holiday, seasonal holiday, individual holiday, event, examination, and term boundary. Modules never do their own date arithmetic against a list of holiday names; they read those flags. That is why a holiday you typed in yesterday changes nothing until the sync has written it onto the day rows.

Working-day logic reads the same source. A date is a working day when it carries no holiday flag and is not knocked out by the weekend rules for that year. Weekend rules are richer than Saturday-and-Sunday: you can switch Sunday off independently and choose all Saturdays, or specific ordinal Saturdays such as the second and fourth.

Where each piece is configured

WhatWhereNotes
Named holidays/holiday-masterReusable list; defaults can be populated in bulk
Weekend rules/academic-calendar, Holidays tabSunday plus which Saturdays are off
Seasonal breaks/academic-calendar, Holidays tabSummer, winter, autumn date ranges
Terms/academic-calendar, Terms tabMust sit inside the year and must not overlap
Events and exam overlays/events and exam sessionsFlagged onto day rows by the same sync

What breaks when the calendar is wrong

  • Exam auto-placement skips non-working days, so a wrong weekend rule either compresses papers or reports that no valid slot exists
  • Substitute cover is generated only for working days in the leave range, so an unsynced holiday creates cover nobody needs
  • Substitute coverage reports and workload analytics count the same working days and inherit the same error
  • Minimum working-day gaps between papers for a class are measured in working days, not calendar days

Limits

The calendar is also the first thing to configure in a new year and the first thing to re-check when a downstream module behaves oddly. If exam placement, leave balances, and coverage reports all look wrong at once, the calendar is the common cause rather than three separate bugs.

  • Holidays are school-wide. There is no per-class or per-grade closure
  • Half-day closures are not modelled as calendar days; a day is open or closed
  • Terms cannot overlap, and creating one outside the academic year date range is rejected

Common questions

Quick answers in plain language.

I added a holiday but attendance and exams still treat it as a working day. Why?+

Holiday records do not take effect until they are written onto the day rows for the academic year. Run the calendar sync from /academic-calendar - POST /api/academic-calendar/sync?academicYearId=... - which regenerates day records and reapplies weekend, seasonal, and individual holidays.

What happens when a seasonal break overlaps a weekend or a named holiday?+

Sync runs weekend first, then seasonal, then individual, and seasonal wins the overlap. A day inside a summer break is flagged as a seasonal holiday, and the weekend and individual flags for that day are cleared, so it is never counted twice.

What are the default weekend rules for a new academic year?+

If no weekend configuration exists, sync creates one with Sunday off and the second Saturday off. Change it before the first sync if your school works a different week, otherwise every working-day count starts from that assumption.

Who can run calendar sync?+

Platform Admin, Principal, Vice Principal, or Admin. Everyone signed in can read calendar data, because students need holiday information on their timetable, but structural operations such as generating days and syncing are restricted.

Related searches

School leaders and IT teams often search for: working days academic year, and school closure dates.