Context
Online dance instruction was growing fast, but the existing tools — Eventbrite for ticketing, Zoom for video, Stripe for payments — were disjointed. Upward Facing Cat needed a single product that handled discovery, booking, payment, and the video meeting link, seamlessly, for both teachers and students.
What I built
I was the full-stack lead, building the product from the ground up on Next.js with TypeScript and a PostgreSQL database (Supabase) managed through Prisma.
Authentication — Multi-provider auth via NextAuth: credentials with email verification and password reset, OAuth, and Google reCAPTCHA on sign-up forms.
Zoom OAuth2 integration — Implemented the full OAuth2 token exchange and refresh cycle. When a student books a class, the system automatically creates a Zoom meeting via the API and includes the meeting link in the confirmation email. Teachers connect their Zoom account once; the rest is automatic.
Stripe Connect — Teachers onboard as Stripe Connected accounts. Students pay via Checkout Sessions. Webhook-driven booking and refund flows with configurable revenue splits between teacher and platform.
Class creation and scheduling — A multi-step class creation form with a timezone-normalised schedule picker. Classes display in each user's local timezone throughout.
Dashboards — Teacher dashboard (earnings, upcoming classes, class management) and student dashboard (bookings, Zoom links, billing history). Redux-managed cart with session persistence.
Testing — Playwright E2E test suite covering the critical booking and payment flows.
Outcome
A production-ready marketplace with a fully relational data model, automated video scheduling, multi-party payments, and E2E coverage — fully deployable on Vercel.