Youth Aquatics: Swim-School Booking Platform by InfiniteUp AgencyYouth Aquatics: Swim-School Booking Platform by InfiniteUp Agency
Built with FlutterFlow

Youth Aquatics: Swim-School Booking Platform

InfiniteUp Agency

InfiniteUp Agency

1 collaborator

The challenge

Youth Aquatics sells private, one-to-one swim instruction inside luxury hotel and private residential pools. The business model is a genuinely good read on an underused asset: nobody is fighting over pool time at 10am on a Tuesday.
The software was the problem. A previous developer had taken the platform to roughly 75% and stalled. The booking flow and calendar were unfinished, mobile responsiveness barely existed, and the part that mattered most: the Firebase project, the SendGrid account, and the Twilio number were all still owned by someone outside the company. Expansion into a second city sat behind all of it.

The approach

Two jobs at once: finish the product, and give the client control of it.
Ownership transfer. We moved Firebase into the client's hands, transferred the FlutterFlow project once they took a paid tier, stood up fresh SendGrid and Twilio accounts on their own domain, and mirrored the codebase to GitHub so the app no longer lived in exactly one place.
Booking flow rebuild. The original made parents click day by day to discover whether anything was available. We replaced it with an Airbnb-style list: city pre-selected from onboarding, a date range instead of a single day, and lesson type inferred from the swimmers you pick. One swimmer is a private lesson, two make it semi-private, capped at a three-year age gap. Age gating computes in months rather than rounded years, so infants land in the right lesson types instead of the nearest one.
The hardest bug. Instructor availability was stored as a DateTime and attached to the lesson, which broke every time Austin and Boston disagreed about what "9am" meant, and made recurring bookings stack onto a single date. We re-modelled availability as minutes from midnight, tied to the location rather than the lesson. Both classes of bug disappeared, and they stayed gone.
Production-grade operations layer:
A manual approval gate on instructor and admin sign-ups (the original onboarding link granted immediate access to records about minors)
A full notification matrix across push, email, and SMS, including A2P 10DLC registration and the explicitly unchecked consent checkbox Twilio requires before it will carry a single message
Off-site lessons at a family's own pool, with address capture and a notes field for gate codes and parking
A post-lesson micro-survey two hours after class, and instructor swim reports as the signal that a lesson actually happened
A pool-partner tier so a hotel can block its own hours for swim meets and maintenance, overriding every instructor calendar at that location

The outcome

The platform is live on Google Play and on the web at swim.youthaquatics.com, running Boston and Austin off one codebase, serving 4 distinct user types (parents, instructors, pool partners, admins) with their own dashboards, permissions, and alerts. Youth Aquatics owns every account in the stack: Firebase, FlutterFlow, SendGrid, Twilio, the repository. That was the part the previous arrangement got wrong, and it's the part that makes the rest of it theirs.
Like this project

Posted Jul 30, 2026

A swim-school platform we inherited three-quarters built, finished, hardened, scaled from one city to two, and handed back with every account in the client's own name.