Aquaworx needed a single platform for swim schools — families booking, instructors running classes, and admins managing locations. We designed, built, and shipped the entire system end-to-end on Next.js + Supabase with Postgres row-level security enforcing role boundaries.
Challenges
Three distinct user types with strict data boundaries.
Booking flows that need to be reliable on mobile and at the front desk.
Payment integration for a regulated market (Jamaica) using a regional gateway alongside Stripe.
Approach
Row-level security in Postgres so each role only sees its own data.
Next.js front end with three portals sharing a single design system.
Stripe + regional gateway with reconciliation in Supabase.
Results
Live in production with daily bookings and recurring billing.
Three role-based portals running on one shared codebase.
Payment reconciliation automated — no manual end-of-month work.


.png)