Case Study - Swim School Management App
A swim school management app for classes, enrolments, payments, and family self-service.
- Client
- Caribeae
- Year
- Service
- Custom software

Overview
Caribeae had information spread across spreadsheets, messages, and separate tools.
It worked, but it took a lot of time to keep everything up to date.
Studio Parallel built one shared system for staff and families.
Classes, enrolments, payments, and self-service are now handled in the same place.
The result is a smoother weekly routine, fewer follow-ups, and more time spent supporting families.
The problem
Caribeae runs hundreds of swim lessons a week, and the admin behind them had outgrown the tools. Enrolments lived in spreadsheets, class lists lived in another, and payments ran through a separate system that didn't know about either. Nothing talked to anything else, so staff retyped the same details several times a week.
Billing was the heaviest part. Working out who owed what meant cross-checking enrolments against payments by hand, then chasing families one message at a time. Makeup lessons and mid-term changes made it worse, because a change in one place had to be remembered in three. Families couldn't see or update their own details, so every small change became a phone call to the front desk.
The build
We built one web application that both staff and families sign in to. Staff see classes, enrolments, and payments in a single view. Families get a self-service portal where they enrol, update their details, and see what they owe.
The app is built with Next.js on a Supabase backend. Postgres holds a single source of truth for families, students, classes, and enrolments, with row-level security keeping each family's data scoped to their own account. Payments are collected through Stripe, and billing is generated from the enrolment records themselves, so an enrolment change updates the next invoice automatically instead of relying on someone remembering it.
The results
The double-entry work is gone, because there's only one place data lives. Billing runs from live enrolment records rather than a reconciliation session, and payment follow-ups dropped since families can see their own balances. The front desk spends less of the week on admin and more of it with families, which is what Caribeae wanted from the start.