HomeEducationCase study · P-013

Crescendo: scheduling for a music school's teaching staff.

A teacher management application for a music school, built with Python, Django and Angular. Peripatetic music teaching has an awkward scheduling shape — many tutors, individual pupils, rooms and instruments, and a timetable that changes weekly. This puts the whole thing online instead of in a shared spreadsheet.

Selected clients since 2008
Power to LiveRBM GlobalDragonflySquiblerMOOSainsbury'sMPCX-LinkPower to LiveRBM GlobalDragonflySquiblerMOOSainsbury'sMPCX-LinkPower to LiveRBM GlobalDragonflySquiblerMOOSainsbury'sMPCX-Link

The challenge.

  • Music teaching is one-to-one and recurring, so the timetable is a dense mesh of individual arrangements rather than a small number of classes.
  • Tutors set their own availability and it changes constantly, which makes a manually-maintained timetable wrong almost as soon as it is published.
  • A single lesson binds together a tutor, a pupil, a room and often an instrument — a clash on any one of those is a clash on the lesson.
  • The people running the schedule are music educators, not systems administrators, so anything requiring technical confidence would simply not get used.

Our approach.

  • Modelled the lesson in Django as the relationship between tutor, pupil, time and room, so that every constraint is checked against the same record rather than in separate places.
  • Made tutor availability something tutors maintain themselves, which removes the administrative bottleneck that causes the timetable to drift out of date.
  • Built the scheduling interface in Angular around the timetable view, because that is how a school actually thinks about its week — the list views exist to support the calendar, not the other way round.
  • Enforced clash detection across every dimension at once rather than only on tutor time, since a free tutor with no available room is not a bookable lesson.
  • Kept recurring arrangements as first-class objects with exceptions attached, so cancelling one week does not require rebuilding the term.

The outcome.

  • The timetable is maintained by the people who hold the information rather than relayed to an administrator.
  • Clashes surface at the point of booking instead of on the morning of the lesson.
  • Recurring lessons and their one-off exceptions coexist without the term needing to be re-entered.
  • Scheduling is done by teaching staff without technical support.
“Enigmatix Global did some great work for Sainsbury's, bridging complex interactions between some older less flexible systems, some rigid vendor solutions and the new systems we were building. The software Enigmatix Global developers wrote stood up well, long beyond the interim scope of it needing to work for 12 to 18 months, and was still in active use 5 years after its creation, since it was part of mission-critical systems.”
Fraser PearceSenior Engineering Manager, Sainsbury's

Questions about this build.

Still wondering something? Ask an engineer

  • Model the session as a relationship between all its constraints — tutor, learner, time, room, equipment — rather than as a calendar entry with attributes. Once the booking is the relationship, clash detection is a single question asked against one record instead of several checks that can disagree. Getting this wrong is the most common reason scheduling systems allow bookings that are impossible in practice.

Let's build from here.

Thirty minutes with an engineer who builds. No sales, no drip campaign. If we're the wrong fit we'll tell you and point you somewhere better.

Response
Within one working day
Minimum
Two-week discovery