Skip to content

Gym Platform

Memberships, classes, coaches, and the exact spot you'll stand in.

A member app for a multi-branch gym chain in the Gulf: buy and manage memberships, book group classes down to the seat, join a live waiting list, train with a coach and track every lift. It is shown here in Walnut's white-label theme, the same product ready to carry any gym's brand.

Market
Gulf · EN / AR
Platforms
iOS · Android · Odoo
App
55 routes · v1.2.9
Delivery
White-label product
Three phones showing the gym app: home dashboard, seat selection and a waiting-list offer
Mobile app · White-label2026

Role

Product, UX/UI, mobile engineering, Odoo integration

Stack

  • React Native 0.78
  • React Query 5
  • Zustand
  • RNEUI
  • Reanimated 3
  • i18next
  • Odoo
  • OneSignal

Chapters

/Full classes, empty spots

The problem

Two goals: self-service for everything a member used to queue for, and no wasted spots in popular classes.

At any busy gym, the popular classes fill first. A member who misses out has no reason to check back, and a spot freed by a late cancellation can easily go unused.

On top of classes, a multi-branch chain sells memberships, personal-training packages, freezes and upgrades. The brief: put the whole membership in the member's pocket, and make every class spot count.

/Calendar → class → spot → waiting list

Booking, down to the seat

Scroll through booking a class, including what happens when it's full.

01 · Calendar

See every class, every branch

A month view with slot dots per day, then class cards with time, coach, branch and spots left, or a clear “Fully booked”.

Classes calendar with a month grid and class cards

02 · Class details

Know before you reserve

Coach, time, duration, branch, capacity and remaining spots, with one pill-shaped action: Reserve Class.

Class details with coach, capacity and days

03 · Choose your spot

Pick your bike, not just your class

A seat map drawn from the studio's real layout: reserved, selected and your spot, with pinch-to-zoom for big rooms.

Seat map for choosing a spot in class

04 · Waiting list

A spot opens. You have five minutes.

Members queue in order. When someone cancels, the next in line gets a push and a 5-minute Accept or Deny, then the offer moves on.

Waiting list offer with a countdown and accept or deny

How a freed spot finds its next member

  1. 1

    Join

    Queue in order

    Joining a full class returns a position (#1, #2, #3), shown on the member's calendar.

  2. 2

    Release

    Someone cancels

    The backend detects the free spot and offers it to #1. The app never invents queue order.

  3. 3

    Offer

    Push + countdown

    A push with its own alert sound deep-links to the class, with a countdown to the offer's expiry.

  4. 4

    Respond

    Accept or deny

    Accept books the spot. Deny or silence passes it to #2 automatically.

  5. 5

    Fill

    Class runs full

    The spot is taken by someone who actually wants it.

/No front-desk queue

The whole membership, self-served

Home dashboard with membership, attendance and classes
Home is server-driven: the API returns an ordered list of sections (membership, attendance, today's classes, trainers, banners), so the gym can rearrange it without an app release.
Membership plans carousel with tiers and pricing
Buy, renew or upgrade: tiers in a carousel, branch and start date up front, and discounts shown as they apply.
Workout analytics chart of weight, sets and reps
A workout log with analytics: total weight, sets and reps per exercise over a week, a month or all time.
Onboarding with gym photography and the Walnut logo
Onboarding in the white-label theme: language switch, guest mode and sign-in in one screen.

Details members never notice (by design)

Links01

Every notification lands somewhere

A custom URL scheme and universal links map to memberships, PT packages and individual classes, and push notifications route straight to the right tab.

Language02

Arabic that looks designed, not translated

About 910 keys per language, full right-to-left, a dedicated Arabic typeface, and digits kept in one face so stats never jump between scripts.

Data03

Server state done properly

17 API service modules and 99 React Query hooks handle caching, retries and invalidation, so screens stay fresh without manual reloads.

Quality04

Rules under test

Waiting-list logic, appointment responses, class eligibility and notification routing are covered by unit tests, the parts that cost members a class if they break.

/One product, any gym's brand

White-label by design

Colour, type, radii and spacing live in one themed design system (RNEUI), with a single primary token driving buttons, active states and highlights. Re-theming is a token change plus one pass over icons and illustrations, not a redesign. That's exactly how these screens were produced: the client's blue swapped for Walnut Ember, their logo for ours.

White-label theme (Walnut)Click a swatch to copy

SF UI Display · Headings · 32 / 28 / 24 / 20

We will accompany you on your fitness journey

Cairo · Arabic · switches in right-to-left

سنرافقك في رحلتك نحو اللياقة البدنية

Card

20px

Chip

40px

Button

999

Tab bar

999

  • Pill buttons 60 px tall, with a floating pill tab bar and the active tab in the primary colour.
  • Re-branding = the primary token, the logo, and a recolour of the icon set.
55

Screens & routes

11 auth · 44 app

99

Data hooks

React Query

~910

i18n keys per language

EN · AR

5

Minute offer window

Waiting list

Source · App source: navigators, API hooks, localization files and the waiting-list handoff spec

All eight screens

Onboarding
01Onboarding
Home
02Home
Calendar
03Calendar
Class details
04Class details
Choose your spot
05Choose your spot
Waiting list
06Waiting list
Membership plans
07Membership plans
Workouts
08Workouts

Screens are recreated from the app's source in Walnut's white-label theme. Names, branches and prices are representative.

Also in the app: personal-training packages and trainer booking, freezes, family and friends memberships, contract e-signing, ID upload, InBody results, referrals, partner benefits and active-device management.

Next / Mobile app · Foundation

70%