
Sports Court Booking App for iOS & Android - ActivePass
One app, two sides of a marketplace. Players find and book courts, classes and events near them. Clubs run the courts, the schedule and the money behind them.
01The challenge
Booking a court still meant phone calls and guesswork
Players rang venues one at a time with no view of real availability. Clubs had nothing digital to publish courts, hours or events.
No view of availability
Nowhere to see which courts, classes or events nearby had an open slot.
Cash and phone calls
Bookings settled offline, with no confirmed payment or cancellation path.
Clubs running on paper
Court schedules, business hours, events and customer lists all managed by hand.
No way to fill a game
Players could not find others at their level or invite people into an open spot.
02What we built
One codebase that switches experience by role
Players get location aware discovery, quick booking and checkout. Clubs get a console for courts, sports, hours, events and customers.
Two flows, one app
Mapped the player journey and the club console as role based flows sharing a single shell.
AWS backend
Cognito sign in with OTP, S3 media uploads, and a 43 endpoint API for bookings, events and payouts.
Flutter build
GetX state management, the Stripe payment sheet, and Firebase Cloud Messaging for booking alerts.
Both roles read the same data in real time, so an open slot on a club's court is instantly bookable on a player's home screen.
03In the app
Discovery on one side, a console on the other
The same app, reshaped by who signed in.
A player opens on courts near them and books in a few taps. A club opens on the courts they run, the hours they keep and the customers who booked. Both sides move the same records.
01Location based discovery
GPS and Google Places surface popular clubs nearby, with live slot availability by sport.
02Court and event booking
A few taps, backed by live availability, capacity tracking and waitlists for full events.
03In app payments
Stripe with Apple Pay and Google Pay, plus cancellations and refunds when plans change.
04Club console
Courts and sports offered, business hours, locations, recurring events, customers and collection details.
05Skill level profiles
Per sport ratings with invite to play, so open spots fill from players at a matching level.
06Notifications and ratings
Firebase Cloud Messaging for booking updates, plus favourites, ratings and in app update prompts.
04The instance
ActivePass, as it ships
Two screens from the live app: the player home feed and a player profile from the invite to play flow.
No client wordmark to show here, so the screens carry the weight instead. A single purple runs through the primary actions, the nav and the featured event card.
Sport categories keep their own soft, pastel tint on the home feed. Everywhere else, colour drops out to plain type on white.


05Stack
A Flutter front end on an AWS backed stack
Auth, storage and payments handled by services built for them.
06Results
A production marketplace, shipped and maintained
Live on both stores since 2024, with regular releases since.
REST endpoints across booking, events and payouts
Dart files in a modular controller based structure
Roles, player and club, in one Flutter codebase
Stores live since July 2024
Active Pass gave our players and our clubs one place to work from. Real availability, instant bookings, payments that work, without the phone calls we used to deal with.
Founder, Active Pass
Downloads on Google Play
Google Play user rating
In production with regular releases
Let's get your marketplace moving.
Tell us the problem your users run into and we'll bring the engineering to fix it, end to end.
Start a project

