Class packs, bookings and waitlists, built by Claude Code on Elements

Class packs, bookings and waitlists, built by Claude Code on Elements

Class packs and memberships by card, a weekly schedule with spots left, waitlists that book the next member, and live rosters.

How it's built

PackPass needed class credits and a monthly membership paid by card, a schedule that counts spots as members book, waitlists that fill themselves, reminder emails and live rosters for the front desk. Each of those is a part of Elements, so the agent spent its 21 minutes on the studio itself.

  • Live schedule and rosters. The schedule, each member's bookings, the class rosters and the member list are LiveTables. Spots left, the front desk's roster with its check-in boxes and each member's credits update the moment anyone books or cancels.
  • Waitlists that book the next member. Booking locks the class first, so the last spot goes to exactly one member and a full class puts the next one on the waitlist. When someone cancels, the first member on the waitlist who can still pay gets the place and an email saying so.
  • Packs and memberships by card. Members buy a class pack or a monthly unlimited membership through Stripe. Credits are granted when the member returns and again when Stripe's webhook arrives, once either way. Until a Stripe key is set, the pay buttons open a test checkout inside the app that records the purchase the same way, and in production the app registers its own webhook on the first checkout.
  • Server calls as function calls. Booking, cancelling, check-in and buying a pack call server functions straight from the page with @rpc.
  • Background work. A one-line cron schedule checks every five minutes for classes two hours out and queues a reminder email job for each booked member, and a member who comes off the waitlist gets an email the same way.
  • Data and roles from SQL. Migrations define the studio and seed a staff login, three instructors, a week of classes, eight members and a full Reformer class with a waitlist. Sessions and one staff guard keep the studio pages with the staff.

Why Elements

Elements is an integrated full-stack app framework and a project server. The project server checks the agent's work as it builds: it type-checks the server and browser code, analyzes the program, applies migrations and runs the tests, then reports the results to the agent. A security mistake, such as calling a server-only function from the browser, is a compile error. The agent reads the report and fixes its own mistakes before it tells you a feature is done. The same checks run on every feature you ask for next.

Run it yourself

  1. 1 Sign up

    Already have an account? Sign in

  2. 2 Install and run the demo One prompt to paste into your agent.

View the code on GitHub →

The prompt

What Claude was given to build this app.

Agent Prompt
Build a class booking app named packpass for a yoga and pilates studio.

MEMBER
- Sign up, buy a class pack (5 or 10 classes) or a monthly unlimited membership
  by card.
- Weekly schedule of classes with instructor, time, spots left.
- Book a class, which uses a credit. Cancel up to 12 hours before for the
  credit back.
- Join the waitlist when a class is full. When someone cancels, the first
  person on the waitlist is booked and emailed.
- A reminder email two hours before class.

STAFF (admin account)
- Classes and instructors, the weekly schedule, capacity.
- Each class's roster, and check members in.
- Members, their credits and membership status.

Payments by Stripe.

Seed the admin, three instructors, a week of classes, eight members with packs
and memberships, bookings, and a full class with a waitlist. Show the seeded
logins on the sign-in page.

Spots left, waitlists and rosters update in real time.