A timetable that fills itself in
Set a batch's weekly slots once. Dated classes are generated from them and kept topped up night after night, and every reschedule, make-up class and substitute is recorded against the right session.

Weekly slots in, dated classes out
A batch holds a weekday-and-time grid. Turn that into real classes either on demand for a date range, or automatically every night up to a horizon you choose.
- Generate on demand for any date range, or nightly up to 7–180 days ahead
- Enrolling a student always generates that batch's classes immediately
- Bulk reschedule a run of classes, with notifications to everyone affected
- Add an ad-hoc or make-up class outside the regular grid
- Assign a substitute teacher to one class without touching the batch
Marked by hand, or attested by the room
Every class has a roster with present, absent, late and excused. For classes held in a Tvarly video room, the server can mark it for you from time actually spent in the room.
- Present, absent, late and excused, with a check-in time and a note
- Mark the whole roster in one action, then correct individuals
- Automatic marking from attested presence in Tvarly video classes
- A human mark always wins — the server never overwrites it
- Optionally restrict hand-marking to admins, leaving tutors read-only

Your definition of present
How much of a class counts as attending, and how late is late, are settings rather than assumptions baked into the product.
- An attendance threshold as a share of the class, so one setting works for a 30-minute tutorial and a 3-hour workshop
- A separate “late after N minutes” rule
- Below the threshold nothing is written at all, rather than a wrong mark
- Optionally let the room drive class status: the first join starts it, an emptied room completes it

What comes with scheduling
Where the edges are
Three things worth being exact about before you rely on them.
Only classes held in a Tvarly-hosted video room, where the server can see who joined and for how long. In-person classes, and classes on an external Zoom, Meet or Teams link, are always marked by hand.
Nothing. A batch stores the timezone it was scheduled in and its times stay as wall-clock times, so existing classes do not shift — and they survive daylight saving changes on both sides.
No. It writes to your calendar without anyone asking, so it stays off until you turn it on and choose how far ahead to keep materialised.
Put your timetable in one place
Set a batch's weekly slots and watch the term fill in.