Case study
Turf and coaching bookings for Malaysian sports venues
A booking platform for turfs, classes and coaches, with a player-matching feature that holds partial bookings while a group fills up.
- Flutter
- Node.js
- Express
- MongoDB
- React
- Client
- PlayMatch
- Industry
- Sports & leisure
- Location
- Malaysia
- Year
- 2025
The challenge
Turf bookings were handled over WhatsApp and a paper diary, which meant double bookings, no-shows and no record of who had paid. Separately, individual players who wanted a game could not find one — a five-a-side pitch sat empty because no single person wanted to pay for the whole slot.
What we built
We built a platform covering turf, class and coach bookings across a Flutter app for players, a React admin for venues, and a Node and MongoDB backend. The player-matching feature lets someone book a partial slot, which is then held with a countdown while other players join; if the group does not fill in time the hold releases and the payment is reversed. Wallet balances, calendar integration and WhatsApp confirmations round it out.
What changed
Venues have a single record of bookings and payments, and slots that would previously have gone unsold can now be filled by players who do not already have a full group.
How it was built
The stack we chose and why it suited this problem rather than a default.
- Flutter
- Node.js
- Express
- MongoDB
- React
More work
Different industries, same engineering standard.
Have a project like this one?
Send us the problem and we will come back within one working day with an honest read on scope, approach and cost — including whether we are the right team for it.