Built on Y Build Go from prompt to a deployed app on your own domain — no server. Start free
BuildShipCompareThe LabAbout Start building →
ybuild / Scenarios

Build a Class Scheduling & Booking App for Your Gym

In a gym or boutique studio, group classes are the retention engine — members who take classes are far less likely to cancel — but every spin bike, reformer and mat is a capacity-limited seat that has to be booked, waitlisted and paid for. Most owners still run this on a whiteboard, a spreadsheet of class-pack balances and a phone that rings during peak hours. A booking app built for how classes actually work — recurring timetables, per-class caps, cancellation windows and pass credits — turns that chaos into a system your members run themselves.

The problem

What you’d build

Class schedule & booking board

A recurring weekly timetable with a real capacity on every class — Mon 6am Spin (18 bikes), Tue 7pm Reformer (10 machines). Members see live "spots left", book their seat, and join an ordered waitlist when a class is full.

Membership & class-pack wallet

One place that knows each member’s plan — unlimited monthly, a 10-class pack, or a drop-in. Booking decrements a pack credit or checks an active membership, and blocks the booking when the pack is empty, expired, or the membership is frozen.

Cancellation & no-show engine

Enforces your cancellation window, auto-promotes the next person off the waitlist when a spot frees, notifies them, and lets an instructor mark attendance so no-shows are flagged or charged per your rule.

The data model

members
name, email, phone, membership_status (active/frozen/cancelled), waiver_signed_at, emergency_contact
class_templates
title, instructor_id, day_of_week, start_time, duration_min, capacity, room, active
class_instances
template_id, date, instructor_id (sub override), capacity, spots_booked, status (scheduled/cancelled)
bookings
member_id, class_instance_id, status (booked/waitlisted/attended/no_show/cancelled), waitlist_position, booked_at, cancelled_at
passes
member_id, plan_type (unlimited/pack/drop-in), credits_remaining, start_date, expires_at, freeze_until, auto_renew

A day in the system

  1. The owner sets the weekly timetable once — each class with its instructor, time and capacity — and the system generates dated class instances for the weeks ahead.
  2. A member logs in on your own domain, sees the week’s grid with live "spots left", and books Saturday 9am HIIT; the system confirms their pass has a credit and decrements one.
  3. The 6am Spin hits its 18-bike cap; the next member taps "join waitlist" and is queued in position order rather than turned away.
  4. At 8pm a booked member cancels — inside the 12-hour window, so they forfeit the credit — and the system auto-promotes the first waitlisted member and texts/emails them the freed spot.
  5. An instructor calls in sick: the owner reassigns a sub on that one class instance (or cancels it), and everyone booked is notified automatically, so nobody shows up to a locked door.
  6. At class time the instructor opens the roster on a tablet and checks members in; anyone booked but absent is marked no-show, which flags their account under the policy.
  7. A member’s monthly payment fails, their status flips to on-hold, and new bookings are blocked until billing is resolved while their existing bookings stay intact.
  8. End of week the owner reviews attendance by class and instructor, spots the slots that keep running empty, and prunes or moves them.

Where AI trips up

✓ Build first
  • The recurring weekly timetable with per-instance capacity, member self-booking, and a live "spots left" count — the core loop that empties the front-desk phone.
  • The membership and class-pack wallet that decrements on booking and blocks when a pack is empty, expired, or frozen.
  • The cancellation window plus waitlist auto-promotion with an automatic email/SMS to the promoted member.
— Skip for now
  • Native iOS/Android apps — a mobile-friendly booking page on your own domain covers almost every member; skip the app stores for v1.
  • A full retail POS for shakes, apparel and lockers — keep v1 to classes and passes.
  • Body-metrics tracking, workout logging and wearable integrations — that’s a fitness app, not a booking system, and it will sink your first release.

FAQ

How do class packs and unlimited memberships work together in one system?

Each member’s pass row carries a plan type and, for packs, a credit balance. Booking decrements a credit for pack holders and simply checks an active, non-frozen status for unlimited members. The booking screen and the cancellation engine both read that one wallet, so a member can never book a class their pack can’t cover.

What happens when a class fills up?

New requests go onto an ordered waitlist instead of being turned away. When someone cancels or a spot opens, the system auto-promotes the first person in line and notifies them — you never chase empty bikes by hand. On ybuild this runs live on your own domain, so members self-serve the whole flow.

Can I enforce a cancellation policy and charge for no-shows?

Yes. You set a window — say 12 hours. Cancel outside it and the credit returns to the pack; cancel inside it, or simply don’t turn up, and the member forfeits the credit or is flagged and charged per your rule. The instructor’s check-in screen is what turns a booking into an attended or no-show record.

How do I handle an instructor calling in sick or a holiday closure?

Because each dated class is its own instance, you cancel or reassign just that one occurrence and everyone booked is notified automatically. The recurring template and every other week stay untouched, so a one-off change never rewrites your whole timetable.

Do members have to sign a waiver before booking?

You can require a signed liability waiver or health questionnaire before a member’s first booking is confirmed, and store the signed date on their record so staff can prove it later. Payments run through a PCI-compliant provider, so card numbers are vaulted there and never on your system.

Sources

Build this for your business

Describe it, go live on your own domain in one pass — hosted, full-stack, no server. Free to start.

Start building free →
Related on ybuild
SMB back-officeclinics & practices Managed AuthPayments & BillingManaged Database CRUD AppSaaSDatabase Schema
Related scenarios
Build an Appointment App for Your SpaBuild a Booking App for a Dental ClinicBuild a Booking App for Your SalonBooking App for Tutors: Recurring Lessons, Prepaid Hours & No-Show ControlBookkeeping App for Small BusinessCRM for Law Firms
Build your own app
Free · no card
Start free →