SaaS · 2024 — 2026
TyawithNio
Bookings, memberships and paid events for a wellness studio, with the back office to run it.
- Role
- Sole developer
- Timeline
- 2024 — 2026
- Stack
- Next.js, Supabase, PostgreSQL, Better Auth, AWS S3
- Links
- Live site ↗ · 2 min read

The problem
TyawithNio is a wellness studio. It needed one place for class bookings, memberships and paid event registration, plus a back office the owner could run without a developer on call. I was the only developer.
What I built
The public site, the booking and payment flows, and the admin back office behind them.
- lost registrations recovered
- 50%
- route handlers in /api/v2
- 44
- developer
- 1
Recovering half the registrations we were losing
Paid event sign-ups were dropping at the account-creation step. People wanted to pay, not sign up.
I let users pay as guests. The catch with guest checkout is double payment: the same person registers twice, once with an account and once without. So the duplicate check is keyed to either the account or the guest email, and nobody pays twice. That recovered 50% of the registrations that had been dropping.
A dashboard instead of a spreadsheet
Attendance was tracked by hand. I turned raw booking and payment data into a self-serve dashboard that rolls transactions up into per-day, per-class rosters. The owner reads it without help.
Uploads that don't cost more every month
Images are compressed on the device before upload, streamed to S3 in batched calls, and the replaced asset is deleted on every change. Mobile uploads got smaller, and storage stopped filling up with orphaned files.
The hard part: changing the foundations while the studio stayed open
The platform began on Firebase with NextAuth. I migrated the data to Supabase Postgres and auth to Better Auth, and folded the rewrite into a versioned /api/v2 of 44 handlers grouped by domain. Versioning meant the old and new paths could live side by side while clients moved over, rather than everything switching on one risky night.