Demonstration build
Foundry Strength Club
Foundry Strength Club is a made-up business we built to demonstrate the work. The site is live and you can try it. The numbers shown on it are illustrative sample data.

The problem
Foundry Strength Club runs a full week of group classes across three coaches, but the old site just listed class names with no sense of which sessions still had room. Members showed up to find a class already full, and prospective members had no way to see the schedule before joining.
What we built
A week-grid timetable driven by typed class data, showing each session as open, nearly full, or waitlist based on real capacity numbers rather than a simple yes/no. Three membership tiers sit below the timetable and route into hosted checkout, gated behind an environment flag so the demo runs in mock mode until real Stripe keys are supplied.
Decisions & why
A waitlist state instead of hiding full classes.
A class that's full is still useful information, members plan around it, and a waitlist gives them a path in if someone drops. Hiding it would just move the disappointment from the screen to the front desk.
Three visible capacity states instead of one binary flag.
Open, nearly full, and waitlist tell a member something a plain 'available' toggle can't: whether to grab the slot now or have a backup plan.
Typed class data instead of a database-backed schedule for the demo.
The timetable needs to be inspectable and reproducible for a prospective client evaluating the build, without standing up a database just to show a week grid.
Checkout gated behind an environment flag rather than live Stripe keys.
The membership flow should demonstrate the full path from tier selection to hosted checkout without processing a real card on a demo business that doesn't exist.
The result it aims for
The build aims to give members an honest, current picture of class capacity so they stop showing up to full rooms, and to give the gym a self-serve path from browsing tiers to joining.
This is the goal the build is designed to hit, not a measured client outcome.