Back to Projects
Back to Projects
FITNESS APPLICATION

RunClub

A premium iOS running companion built in SwiftUI and powered by deep Apple HealthKit, CoreLocation, and MapKit integrations.

github.com/Thet9354/IOS-Run-Club
RunClub Dashboard & Map Integration Preview

The Thesis & The Problem

Running applications are often overcrowded with social metrics, commercial ads, and unnecessary bloatware. For runners seeking a focused, premium session tracker, the cognitive noise makes it hard to quickly view key metrics—such as split times, live heart rate zones, and GPS trails—while in rapid motion.

RunClub was engineered to solve this friction: a minimalist, high-contrast, beautiful sports tracker. By tapping directly into Apple's native HealthKit and CoreLocation, the app gathers high-accuracy biomechanical metrics directly from the Apple Watch and iPhone, storing them securely on-device.

Zero-Friction Active UX: The running interface uses extra-large typography layers styled to be highly legible during high-cadence strides. Touch interactions are optimized for wet or sweaty hands, utilizing dynamic gesture-swipes (like a long swipe-right to pause) to completely eliminate accidental clicks.

Design Thinking: Dynamic Dark Aesthetics

Prototyping a high-performance fitness tracker required specialized design principles:

  • Energy-Efficient Contrast: Utilizing absolute deep black OLED background layers combined with bright green and neon accents to maximize battery lifespan during extended GPS sessions.
  • High-Frequency GPS Polling: Implemented smart CoreLocation distance filters: when pace slows down, polling frequency drops, preserving device battery. During rapid sprints, high-accuracy telemetry takes over.
  • Smooth Map Animations: Live location routes are rendered seamlessly using the new SwiftUI Map overlays, offering custom path shading that changes color dynamically depending on the current heart rate intensity zone.

Apple HealthKit Integration Handler

Below is a code representation of our HealthKit permissions manager that bridges user health metrics and queries calories/active minutes dynamically:

import Foundation import HealthKit class HealthKitManager: ObservableObject { let healthStore = HKHealthStore() @Published var isAuthorized: Bool = false func requestAuthorization() { guard HKHealthStore.isHealthDataAvailable() else { return } let typesToShare: Set = [ HKObjectType.workoutType() ] let typesToRead: Set = [ HKObjectType.quantityType(forIdentifier: .heartRate)!, HKObjectType.quantityType(forIdentifier: .activeEnergyBurned)!, HKObjectType.quantityType(forIdentifier: .distanceWalkingRunning)! ] healthStore.requestAuthorization(toShare: typesToShare, read: typesToRead) { success, error in DispatchQueue.main.async { if success { self.isAuthorized = true } } } } }

Key Milestones & Dynamic Features

  1. OLED High-Legibility HUD: Displays real-time metrics (Elapsed Time, Distance, Pace, Heart Rate) optimized to remain completely readable even from an arm's-length distance.
  2. Apple Health Sync: Automatically populates completed runs directly into the native Apple Fitness rings.
  3. Heart Rate Zone Map Shader: Paths on the post-run review map fade seamlessly between green, yellow, and red based on cardiac effort levels.