How the data fits together
How the data fits together
Timetabler's data model has a small number of entities, and almost everything else is just those entities referencing each other. This page is a plain-language map of how they connect — useful to skim once before you start entering data, so the per-record guides make more sense.
The building blocks
| Entity | What it is | Set up on |
|---|---|---|
| Period | A single slot in the week, e.g. "Monday 09:00–10:00" — either a LESSON period (can host a class) or a BREAK period (nothing can be scheduled there). | Periods |
| Teacher | A person who can be assigned to teach lessons. Can be linked to a login for the teacher portal. | Teachers |
| Room | A physical space with a capacity and free-form tags (e.g. lab, projector). Optionally belongs to a Building. | Rooms |
| Building | Just a name, used to group Rooms and to configure a travel penalty between building pairs (optional). | Buildings |
| Subject | A named subject (Mathematics, Chemistry, ...). Deliberately minimal — just a name. | Subjects |
| Class Group | A group of students — a whole class, a Year, or a subgroup (e.g. a language-elective split). Organized as a tree via a parent/child relationship. | Classes |
| Department | A named set of teachers plus a set of meeting periods — used to block those teachers from teaching during shared meeting time. | Departments |
| Lesson | The actual demand: "this subject, taught by these teacher(s), to these class group(s), this many times a week, for this many periods each time." | Lessons |
Why Lessons don't get edited "inline"
A Lesson doesn't own a Subject, a Teacher, or a Class Group — it references them, by picking from lists built on the other pages. This is why the setup order in Getting started matters: you can't reference a Teacher that doesn't exist yet.
This also means the same Teacher, Room, or Subject can be reused across as many Lessons as you want without re-entering it — add "Mr. Smith" once on the Teachers page, and every Lesson that needs him just picks him from a dropdown.
Groups, not individual students
Timetabler schedules Class Groups, not individual students. A Class Group can represent a
whole class (10A), a whole Year (Year 10, with classes underneath it as children), or a
subgroup of a class (10A-French, a child of 10A, for students who take French instead of
German). See Class Groups, Years & Subgroups for how the parent/child
tree works and what it changes about scheduling.
What a Lesson actually represents
A single Lesson record is one recurring pattern, not one specific meeting. "Math, Mr. Smith, 10A, 5 times a week" is one Lesson; the solver decides which five periods it lands on. If a Lesson lists more than one Class Group, that's not five separate classes each getting their own Math — it's one shared session where all of those groups attend together (see the Creating Lessons article for the distinction between that and creating a separate Lesson per class, which is what most schools actually want for ordinary subject teaching).
Everything else is a constraint on top of this
Once Periods, Teachers, Rooms, Subjects, Classes, and Lessons exist, the rest of the app is about constraining how those Lessons get placed onto Periods: locking a Lesson to a specific slot, marking a Teacher unavailable at certain times, requiring a Room tag, or tuning the soft-constraint weights that shape the quality of the schedule (spread, gaps, room stability, and so on) rather than its bare feasibility. Those are covered in their own section of Help once you've got the core records in place.