Capacity-N session booking
Many people book INTO one session with a seat limit — not one person per slot
A session — a dance class, a yoga session, a tutoring group, a workshop — publishes a seat count, and up to that many people book into the same session at the same time. This is the same fixed-slot / identity-keyed capacity decision core the rest of the schedule.software family runs on, in its CAPACITY-N mode: capacity 1 is an appointment, capacity N is a class roster — the same booking law, already built in the shared engine, not a retrofit bolted onto a 1:1 tool. Per-session capacity is counted under a lock inside the same transaction that books, so a session can never silently over-fill even when several people try to claim the last seat at once. The engine mode is built; the classly.software-branded roster page a student would actually open is in development.
Engine built (capacity-N mode) · branded roster page in development
Waitlist when a session fills
A full session doesn’t turn a client away — it queues them for the next open seat
When a session's seat count is reached, the next person to try booking is offered a waitlist spot instead of a dead end. If a seat opens — a cancellation, a capacity increase — the next waitlisted person in line is offered it. This is designed as a queue keyed off the same capacity-N decision core the session booking itself runs on, so a waitlist promotion can never push a session over its seat limit. The waitlist mechanism is planned for the branded surface and is not live today.
Planned · not yet built on a classly.software surface
Instructor roster & attendance view
An instructor sees exactly who is coming to a session — not a headcount guess
An instructor's view of a session shows the actual roster: who booked in, whether a seat is a waitlist promotion, and a place to mark attendance after the session runs. This is the studio-facing surface classly.software is built for — the counterpart to the capacity-N booking engine that already guarantees the roster can never exceed the published seat count. This dashboard is designed and not built today; nothing on this page represents a live instructor console today.
Planned · instructor dashboard not yet built
Zero commission on any booking
No percentage taken off a session fee, at any tier, ever
A booking through classly.software is never skimmed a commission — not a percentage of a class fee, not a per-seat cut. This is a stated commitment for the planned pricing tiers below (Starter, Studio, and Multi-location/Education custom), not a claim about a live payments product; classly.software does not process payments today, and no card is charged anywhere on this site.
Planned pricing commitment · no live payments today
One shared calendar substrate across the family
A studio that outgrows classly turns on adjacent modules — no vendor switch
classly.software runs on the same shared calendar substrate as the rest of the schedule.software family: the same fixed-slot / identity-keyed capacity decision core, run here at capacity N instead of capacity 1. A studio that starts with drop-in group classes and later wants 1:1 sessions, or a recurring cohort series, is designed to reach for a sibling product on the same underlying booking law instead of migrating to a new vendor and a new data model. This is a structural property of the shared engine today; the cross-product account/billing handoff between siblings is planned, not built.
Shared engine built · cross-product account handoff planned
No-double-book at the database, not the form
A malformed booking is rejected at the database — never a silent over-fill
Whether a session's capacity is 1 or 30, the same server-side invariants apply: a SELECT … FOR UPDATE counts current live bookings against the published seat count before writing, and a partial-unique index prevents the same person from double-booking the same session. A conflict — a full session, a duplicate booking attempt — returns a clean, retryable response with a machine reason, never a silent over-fill and never a 500. This is the same database-level discipline the shared engine already carries for its capacity-1 siblings, applied here to a roster instead of a single seat.
Built in the shared engine · not yet exposed on a classly.software surface