Back to Blog
Feature8 min read

Introducing Timetable & Booking — the whole school on one grid

Cam

Ask a school what week it is and you get a pause.

It is Week B, unless the INSET day moved it, unless half term pauses the count, unless somebody wrote the wrong letter on the board in September and it has been wrong ever since. Meanwhile N21 is double-booked because two departments both wrote it on their own copy of the timetable, and the minibus has been promised to Geography and to the football team.

These are not three problems. They are one — the school does not have a single shared answer to when — and Timetable & Booking is that answer.

The year is a rule, not a list

You do not type 39 weeks. You give the year its first and last day, a cycle of one, two or three weeks, and an anchor: which Monday starts the cycle and which cycle week that Monday is. Everything is counted outward from there.

Closures come next — holidays, INSET days, bank holidays — and their cost is measured in weeks, not days. A half-term week pauses the cycle. A single bank-holiday Monday cancels those lessons and the week still takes its turn. That distinction is the one every hand-maintained timetable gets wrong eventually, and it is the reason Week B ends up on the wrong Monday in February.

For when reality wins anyway, you can pin a week by hand. A pin survives every rebuild, and the screen tells you which of two things it is doing: under continue mode it changes that week alone, under pause it reseeds the running count and every later week moves with it.

Nothing moves without showing you first

Change a closure, the dates, the cycle, the anchor, the holiday mode, the taught weekdays or a pin, and you get a preview: exactly which weeks renumber, and exactly which existing bookings would move, be suppressed or clash.

Then you confirm. Not before.

That is the whole difference between a calendar you trust and one you check by hand every time you touch it.

A day is rows, and the rows are yours

The shape of a school day is an ordered list of labelled rows. Where the breaks are is simply which rows are not bookable — so call a row Tutor, Lunch or Registration as your school actually does, and a school that labels its periods rather than timing them can leave the clock off entirely.

Two things about editing it are worth knowing.

The day is shared across years, because bell times are a fact about the school rather than about 2026/27. Editing it while a live year is selected writes the same rows into every year still to be taught — and never into one that has already ended.

And reordering is free while removing is not. A period's identity is separate from its position, so dragging rows around changes no lesson and no booking. Removing one retires that period for good, sweeps the entries keyed to it, and is refused outright while a recurring booking still runs in it.

The standing timetable, then the exceptions

You fill in one grid per cycle week per room — what normally runs. Eight rooms on a two-week cycle is sixteen grids, and that is the entire year.

Then the published board handles the exceptions. Type into a cell and it applies to that week only: 9F/It is in N21 this week. The standing timetable underneath is never touched, and undo puts the lesson back.

The cell also says who changed it and what it displaced, so the next person knows they are reading a colleague's note rather than the school's timetable.

Two states there look similar and mean opposite things, so both are spelled out on screen. A change with no text means the lesson is explicitly not running in that room this week — the class moved — and shows a dash. Reset deletes the week's change entirely and the standing lesson simply reappears, because it was never altered.

One resource, one booking, whoever asks

Here is the part that only matters at a school.

A minibus belongs to the school. The rota that runs it belongs to a department — Site Team runs the minibuses, IT Support runs the IT rooms. That asymmetry is deliberate, and it means two departments reaching the same minibus must collide.

So bookings are keyed on the resource and never on the department. A department's own list is attribution and reporting; it is not a partition. There is no arrangement of projects in which Geography and the football team can both have it.

A pending request holds the slot while it waits, which is the answer to an obvious question: two requests that held nothing are two requests an approver could both accept. Rejecting one is what releases it.

And rescheduling an approved booking on a resource that needs approval sends it back to pending — because the approval was for a window, not for a row. Otherwise asking for Tuesday at four, getting it approved, and moving it to the whole of Friday launders an approval.

Publishing is its own act

Switching Booking on and publishing the timetable are two separate switches, so a term's grid can be entered over several days without a half-built version appearing on every teacher's screen.

Unpublishing deletes nothing. Not a cell, not a booking, not a template. Neither does switching Booking off. "Remove" reads as "delete", so both controls say so.

The workbook

The whole year exports to Excel: a sheet per week, a tab per cycle-week template, a half-terms tab and an info sheet, tinted with the school's own accent colour.

Four switches are remembered between exports, and all four default to off — a school that never opens the panel gets the same workbook it got yesterday. Each one states its own cost beside it, because two of them have real ones. Weeks follow the templates turns the file from a record of what was taught into a live document: edit a template in Excel and what a finished week says it did changes with it. Lock the timetabled lessons locks the entire column of a room that is out of service, free periods included, because a printed grid is read positionally and dropping the column would shift every room to its right.

The password on a protected sheet stops accidents, not people. Anyone determined can strip it in about a minute, and the panel says exactly that rather than implying otherwise. It is used for one export and never stored in your file — a password in the file is a password in the email.

And you can take the year with you

The free Monospace Timetable tool reads and writes the same file this does. A school already here can take a year out and build the workbook on a laptop with no login; a school starting there can load the whole year in later. Nothing is typed twice, in either direction.

That is a separate, open-source program, and it is free. It has its own post.

Limits

A school keeps three academic years — the one running, the one being built and the one just gone — each up to 400 days, on a cycle of one, two or three weeks. Up to twenty rows in a day, two hundred closures, twenty rooms on a printed list and eight fact rows beneath them.

Deleting a year takes its closures, its day shape, its week map, its templates and every week change staff made on top of them. It is refused while a recurring booking is still live on it.

Known gaps

Recurring bookings — the minibus every Week A Tuesday, all year — exist on the server, including what happens to those bookings when a closure moves the weeks underneath them. There is no screen for it yet. Book them individually for now; it is the next thing this needs.

The second is smaller: the flag marking a room whose underlying asset was deleted is set overnight, so it can be up to a day out of date. The booking itself never breaks — the room keeps working under the name it captured.

Availability

Booking is on Team organisation plans and above. Rooms backed by the estate register need Business, because that is where Inventory lives — but a school running Booking with no Inventory at all is a first-class case, and typing a room in by name is fully supported.