Product Architect and Mobile Engineering Lead, Leejam Sports
Fitness Time
The member app and website for Leejam's Fitness Time gyms in Saudi Arabia and the UAE: memberships, bookings, InBody results and wearable data.
# fitness-time.yaml
project: Fitness Time
org: Leejam Sports
role: Product Architect and Mobile Engineering Lead
domain: [fitness, health]
ships_to: [iOS, Android, Web]
stack:
- Flutter
- Dart
- Swift
- SwiftUI
- Kotlin
- HealthKit
- Health ConnectContext
Leejam Sports runs Fitness Time across Saudi Arabia and the UAE, describes itself as the largest health and fitness provider in the MENA region, and is listed on the Saudi Exchange. The app is how members renew, book classes, check InBody results and track training.
The app already had a large audience when I joined. My job was to make it stable, cheaper to run and worth opening every day.
What I owned
- Led the rebuild of the member app across iOS and Android, running two engineering teams and a DevOps function.
- Built a shared component library (design system, navigation, auth flows, analytics) used across three apps, including the FT Trainers staff app.
- Designed the SDK and BLE plus QR authentication for gym access control across every gym in the network, with the hardware and operations teams.
- Wrote a custom Flutter plugin that reads fitness and health data directly from Apple HealthKit and Android Health Connect.
- Ran the stability programme: profiling, architecture refactors and SDK hygiene.
- Introduced Datadog observability across the mobile platform for proactive monitoring and crash detection.
- Replaced paid third-party dependencies with in-house modules where the maths made sense.
- Redesigned key flows for engagement, and integrated fitness trackers and wearables.
- Built the web side too: the Fitness Time landing page, the CMS behind it and related web tools.
Decisions
Own the health data bridge
Off-the-shelf health plugins lagged platform changes and hid permission edge cases. A small in-house plugin over HealthKit and Health Connect gave us control over what we read, when, and how consent was shown.
One component library, two apps
Members and trainers see the same classes, bookings and results from different sides. A shared library kept both apps consistent, so each UI change was made once.
Results
Highlighted figures are results from my role. The rest are public context about the product, with sources.