PackPass: class packs, bookings and waitlists for a yoga and Pilates studio
Class packs and memberships by card, a weekly schedule with spots left, waitlists that book the next member, and live rosters.
Agent specs
- Agent
- Claude Code, Opus 5.5 Medium
- Time
- 21 min
- Cost
- $9.70*
Agents work faster and more accurately on Elements.
* Cost at API rates, September 2026.
Run it yourself
Paste this prompt into your AI agent. You get the finished app on your own machine, ready to change however you like.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app from the elementscode/demo-packpass scaffold: cd ~/elements/projects elements create packpass -scaffold=elementscode/demo-packpass cd packpass Start the app.
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.
What Elements gave the app
- 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.
What the project server gave the agent
The project server runs alongside the agent and answers as soon as a file is saved: it type-checks the templates, TypeScript and SQL, applies migrations and reruns the tests, so every question came back right away and the agent kept building.
What shipped
The app type-checks with zero errors and all 46 tests pass. Every page works on desktop and phone. A real sandbox payment went through Stripe end to end.
The code
Build it from scratch
To watch your agent build this app from an empty project, use the prompt we used instead. It takes longer than starting from the finished app above.
Install elements: curl -fsSL 'https://install.elements.dev?os=darwin' | sh && export PATH=~/elements/bin:$PATH Create an Elements app: cd ~/elements/projects elements create packpass cd packpass Start the app, then build this: 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.
Comments· 0