ActivePass app screens showing nearby clubs, court booking slots and event listings
Back to our workSports & Activity Booking

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.

43API endpoints
159Dart files
2Roles, one codebase
1K+Play Store installs
Budget$100K+
Timeframe6 months
Release DateJuly 2024
Team2 Flutter engineers, 1 designer
IndustrySports and fitness marketplace
Websiteactivepass.app

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.

01

No view of availability

Nowhere to see which courts, classes or events nearby had an open slot.

02

Cash and phone calls

Bookings settled offline, with no confirmed payment or cancellation path.

03

Clubs running on paper

Court schedules, business hours, events and customer lists all managed by hand.

04

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.

PlayerDiscovery and booking
AuthAmazon Cognito
API43 REST endpoints
ClubManagement console
Step 01

Two flows, one app

Mapped the player journey and the club console as role based flows sharing a single shell.

Step 02

AWS backend

Cognito sign in with OTP, S3 media uploads, and a 43 endpoint API for bookings, events and payouts.

Step 03

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.

ActivePass home feed showing a featured tennis event, quick book sport categories and an upcoming booking
Home
ActivePass player profile with player rating, favourite sports, gameplay clips and a sent invitation to play
Player profile

05Stack

A Flutter front end on an AWS backed stack

Auth, storage and payments handled by services built for them.

FlutterOne UI layer, both platforms
DartGetX controllers per module
AmplifyBackend platform
CognitoSign in and OTP verification
S3Club and event media
StripeCheckout, Apple Pay and Google Pay
Cloud MsgingBooking notifications
Maps & PlacesNearby club discovery

06Results

A production marketplace, shipped and maintained

Live on both stores since 2024, with regular releases since.

43

REST endpoints across booking, events and payouts

159

Dart files in a modular controller based structure

2

Roles, player and club, in one Flutter codebase

2

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
1K+

Downloads on Google Play

4.2 stars

Google Play user rating

2 yrs

In production with regular releases

Have something similar in mind?

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