WellStudio Platform
I built WellStudio to work through booking capacity, credit accounting, and payment retries in one application. It covers the public site, member accounts, and staff tools. The demo uses synthetic data and has no live studio users.
Product
Image gallery
Using the demo
- Visitors can browse sample classes and plans, or leave an enquiry.
- Members can book or cancel a class and check their entitlements and credit balance.
- Staff can manage the day's classes, open sessions, and book for members within the same capacity limits.
How it's built
WellStudio is a modular Next.js monolith. Routes call domain services; PostgreSQL and Prisma store bookings, entitlements, and the credit ledger. Supabase Auth handles identity. Before granting credits, the payment service checks provider events against the purchase recorded locally.
Engineering decisions
- Bookings check capacity and spend credits in a serializable transaction, including when members compete for the last place.
- Database migrations keep active bookings unique while preserving repeated cancellations and waitlist history.
- Payment, provider-event, and notification keys identify work already processed, so a repeated confirmation does not grant credits again.
Capabilities
- Public schedule, plans, and demo lead capture
- Member portal with bookings, cancellations, and credit balances
- Staff tools for assisted bookings under the same capacity rules
- Credit-pack checkout using either the application simulator or Stripe test mode
Stack
- Next.js
- TypeScript
- Prisma
- Supabase
- Stripe
Links