ClubLab
A booking app that pulled private courts off the marketplaces
ClubLab is an Israeli platform that runs racket-sport clubs — tennis, paddle, badminton, squash. The company already had a developed CRM on its side for managing courts, bookings, and accessories. What it did not have was a way to put booking directly in the hands of players. We built that: the mobile app for iOS and Android that people use to find a court and book it.

The Client

ClubLab sells software to sports facilities. Its system handles the operational side of a club — court inventory, reservations, accessories, and hardware like automated lighting and gate access. Clubs run their day-to-day through it. The piece that reached the end customer, the player booking a game on their phone, was the part ClubLab came to us to build.

The Challenge

In Israel, booking a court mostly happened through general marketplaces. For a club owner, that was a hard place to stand out: your court was one line in a list next to everyone else's, and the marketplace owned the relationship with the player.

ClubLab's answer was to give clubs their own channel. A club — including private clubs whose courts never appeared on the marketplaces at all — could register inside the platform and offer its courts through ClubLab's own app. Players got access to courts they couldn't book elsewhere, often at a better price, and the club kept the customer relationship instead of renting it from a marketplace.
For that to work, the booking experience on the player's phone had to be good enough to move people off the tools they already used. That app is what we were responsible for.

Our Approach

The backend and CRM belong to ClubLab. Courts, availability, and club data all live in their system. Our scope was the player-facing app built against their API, which kept the boundary clean: they own the operational platform, we own the mobile product that sits on top of it.

Because every court a club registered in the CRM became bookable through the app automatically, the app didn't need its own notion of inventory. It needed to read the live state of courts from ClubLab's system and turn it into something a player could act on in a few taps.

We built it in Flutter, one codebase across iOS and Android, with full Hebrew support. Hebrew is right-to-left, so this wasn't a translation layer — the whole interface had to mirror, from navigation direction to how dates and times lay out on screen. English is supported alongside it.

What We Built

Booking

A player picks a date, sees available courts, and reserves a slot. When nothing is free for the time they want, a stand-by list lets them queue for a slot instead of walking away.

Payments

Online payment runs through Tranzila, an Israeli payment provider, integrated over its API so a player pays inside the flow and the booking is confirmed.

The rest of the loop

Phone-number login with an SMS code, order confirmation, order history, a user profile, and club information — the full path from opening the app to having a court booked and paid for.

Outcome

The app is live on the App Store and Google Play and is in active use by players booking through ClubLab's clubs. It gave club owners a channel of their own — one that brought private courts online for the first time and pulled bookings away from the marketplaces they used to depend on.

Tech Stack

Platform: Flutter (Dart), one codebase for iOS and Android | State management & DI: BLoC, GetX, get_it | Networking: Dio, REST API | Navigation: go_router | Storage: flutter_secure_storage, shared_preferences | Localization: intl, flutter_localizations (English + Hebrew, RTL) | Payments: Tranzila API | Auth: phone number with SMS OTP | Backend & CRM: Client-owned (ClubLab)

Feel like your project would win from our work? Let's talk!
sales@smartificial-ai.com
Made on
Tilda