All features
Building
Schedules & enrollment

One calendar — season, class, session, private — same table

The whole year in one view. No joining across separate tables. Season at the top, sessions on the day.

Status note: Calendar UI ships in week 3 of the V1 build.

The story

Most studio platforms model the calendar as three or four separate tables — seasons, classes, sessions, privates — and you join them at runtime to see anything useful. Mike asks 'what's happening at 6pm Thursday' and the platform takes two seconds to answer.

Pirouette uses one events table. Season is a parent event. Each class is an event under that season. Each class session is an event under the class. Privates, master classes, recital shows, sub-coverage requests, and time-off requests are all events with different types. One query renders the day, the week, or the year.

What this looks like in practice

  • Season → class → session → private all live on one events table
  • Recurring class schedules with holiday exclusions, generated on demand
  • 34-classes-over-10-months delivery counter computed live, not stored stale
  • Real-time push to the assigned teacher when a late private gets booked

Want to see this running on your studio's data?

Walk through a demo with us. We'll show this feature in context against the day-to-day workflow your studio actually has.