arrow_backAll work

Case study / Sports & Fitness

How we built a sports club OS in under 4 weeks

A multi-tenant club management platform now powering 500+ athletes across South Africa.

Client
Athleet
Industry
Sports & Fitness
Year
2025
Stack
Next.js 16 · Firebase
Athleet cover

01 — The Brief

A real problem.

Athleet came to us with a problem most growing sports clubs share but rarely articulate well: their administrative spine was held together with WhatsApp groups, a scattering of Google Sheets, and the occasional PDF emailed at 11pm. Coaches were re-typing rosters. Parents were asking the same questions every week. Membership numbers had quietly tripled in eighteen months and the cracks were now structural. They had tried two off-the-shelf club platforms before us — both built for North-American leagues with rigid season models that did not match how a South African club actually runs. The brief was deceptively simple: build the system we should have started with three years ago, and make it boring enough that admins trust it on day one.

Our admins were running a club out of WhatsApp screenshots and a 14-tab spreadsheet. We needed a backbone, not another app.

Daniel Roux · Co-founder, Athleet

02 — The Insight

What we saw.

The breakthrough was reframing what a club actually is. Most platforms in this space model a club as a workflow engine — registrations, payments, attendance — and bolt content on as an afterthought. We argued the opposite. A club is fundamentally a content management system: athletes, teams, sessions, parents, sponsors are all entities you publish, edit, and relate. Workflow is just the verb that ties them together. Once we accepted that framing, the data model collapsed from forty-seven tables in their previous vendor's schema to fourteen. Subdomains per club became cheap. Onboarding a new club went from a week of configuration to a ten-step wizard a coach can finish on a Sunday afternoon.

03 — The Build

What we shipped.

We built Athleet as a multi-tenant Next.js 16 application backed by Firebase, with a per-club subdomain model and a single shared codebase. Firestore handles the operational data with composite indexes per tenant; Cloud Functions handle the heavier work — invoice generation, attendance roll-ups, automated WhatsApp reminders. Every club gets its own brand profile (logo, colors, voice) which the marketing pages and parent-facing emails consume directly, so the platform never feels white-labelled in the cheap sense. The 10-step onboarding wizard was the unlock: it asks the right questions in the right order, defaults intelligently from the club's sport and size, and produces a usable platform at the end. We also shipped a mobile companion via Capacitor so coaches can mark attendance pitch-side without unlocking a laptop. The whole thing went live for the first three pilot clubs in under four weeks from kickoff.

Athleet build visual 1
Athleet build visual 2

04 — The Outcome

What changed.

500+
athletes managed
<4w
time to launch
98%
retention
Daniel Roux

Pip and the team rebuilt our entire platform in 6 weeks. We shipped what our last vendor took 9 months to half-finish — and our coaches actually use it.

Daniel Roux · Co-founder, Athleet

05 — Deliverables

What we shipped.

  • 01Multi-tenant Next.js 16 platform with per-club subdomains
  • 02Firestore data layer with tenant-scoped composite indexes
  • 0310-step onboarding wizard for new clubs
  • 04Coach mobile app via Capacitor for pitch-side attendance
  • 05Automated parent comms via Resend + WhatsApp Cloud API
  • 06Per-club brand profile + theming system
  • 07Admin analytics dashboard with retention and revenue metrics

06 — Stack

The tools.

Next.js 16FirebaseTailwind v4Resend

Want a case study like this one — with your name on it?

Start a projectarrow_forward