All workCase study
Nexbook
A lesson booking app for parents, instructors, and the people running education businesses.
Private beta
Problem
Booking a lesson means finding a time that works for a student, an instructor, and a location. A change to one schedule can affect the others, and payment still has to match the booking. I built Nexbook to keep those details together for families and the education businesses they book with.
Role
I'm the sole designer and engineer. I've built the React Native app, the Supabase backend, and the Stripe Connect payment flows. Parents and staff use different screens over the same booking data, so a scheduling change has to make sense on both sides.
What I built
- Parents can manage family members, browse programs, and book lessons. Staff have a calendar and tools for managing instructors, locations, and attendance. Each view uses the same booking records.
- Changing a booking's time triggers checks for overlapping student and instructor bookings. The app also checks staff time off and location closures. Recurring booking rules hold a family's preferred day and time for repeat lessons.
- A person's role belongs to an organization. Someone can be an instructor in one business and a parent in another. I built organization-aware permissions and database access rules so switching businesses changes what they can see and manage.
- Stripe Connect sends lesson payments to the organization running them. I added checkout and a native payment sheet, with webhook handling that skips completed carts. If a lesson fills up before a paid cart becomes a booking, the payment handler attempts a refund.
- The admin tools cover the work around a lesson too. Owners can invite staff, approve join requests, manage families, and set up multiple locations. Booking updates refresh the relevant screens through Supabase subscriptions and TanStack Query.
Outcome
- Nexbook is in private beta.
- I've been working on it since 2024.
Stack
Expo · React Native · TypeScript · HeroUI Native · Supabase · TanStack Query · Stripe Connect
