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.
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
Related
Teacher raises a sub request. It fans out to front desk, owners, and qualified teachers. First-to-claim locks. The original teacher sees it happen.
Teacher opens the app, sees today's class roster, taps a kid, the kid is present. No drilling, no laptop, no end-of-day catch-up.
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.