SmartFit tracks and improves workout habits through personalized goal-setting, equipment-aware exercise planning, and HealthKit-powered session stats. Users sign in via Google, define muscle-group targets, select gym machines, and view progress over time.
| Feature | Status | Technology |
|---|---|---|
| Google Sign-In | ✅ Live | Firebase Auth + GoogleSignIn 7 |
| Personalized goal setting | 🔨 In progress | Custom PreferenceModel (chest, arms, legs, back, abs) |
| Machine selection | 🔨 In progress | Life Fitness API |
| HealthKit stats (HR, calories, steps) | 🔨 In progress | HealthKit framework |
| Progress charts | 🔨 In progress | Apple Fitness framework |
| Workout reminders | 📋 Planned | UserNotifications |
- Swift 6.3 — strict concurrency,
async/awaitthroughout auth flow,@MainActorUI isolation - Firebase 11 —
FirebaseCore+FirebaseAuthfor credential management - GoogleSignIn 7 — modern
signIn(withPresenting:)async API, no delegate pattern - HealthKit — per-session and aggregate stat collection
- CocoaPods (migrating to Swift Package Manager)
SmartFit/
├── AppDelegate.swift # @main entry, FirebaseApp.configure(), URL routing
├── LoginViewController.swift # Google Sign-In (@MainActor, async/await)
├── ViewController.swift # Main dashboard entry point
└── Models (planned)
├── PreferenceModel # Body-area targets, goal weight/time
├── WorkoutStats # Session aggregator
└── MachineStats # Per-machine DataTracker
User
├── PreferenceModel
│ ├── chest / legs / arms / back / abs (Int)
│ ├── goal_weight (optional)
│ └── goal_time (optional)
└── WorkoutStats
├── total_stats: DataTracker
└── machine_stats: [MachineStatsModel]
└── DataTracker
├── weight
├── heart_rate
├── calories_burned
├── time_duration
└── steps
git clone https://github.com/CPF-17/SmartFit.git
cd SmartFit
pod install
open SmartFit.xcworkspaceAdd GoogleService-Info.plist from your Firebase console (iOS app → Project Settings) before building.
Requirements: Xcode 16+, iOS 17+ deployment target, CocoaPods
Built by CPF-17 at UC San Diego