SyncMyFit
Baranidharan Pasupathi / August 5, 2025
SyncMyFit is a Swift-based iOS app that securely syncs Fitbit data to Apple Health. I built it to solve a personal frustration: the lack of a seamless way to bring Fitbit activity into Apple Health for unified tracking.
What started as a weekend experiment evolved into a fully featured project with future aspirations for automation, customization, and power-user tools.
What it does
The app provides a direct bridge between the Fitbit API and Apple's HealthKit, giving users full control and visibility over their health records.
Key features include:
- Secure login via Fitbit OAuth
- Syncing core health metrics like steps, heart rate, sleep, and calories
- Writing data to Apple Health using HealthKit with custom identifiers
- Tracking last sync with a visible status and timestamp
- A visual dashboard with animated circular progress indicators
- Account management with profile info and logout confirmations
Tech stack
This project was a great opportunity to apply modern Swift technologies in a real-world context.
- SwiftUI: A declarative UI for modern iOS development.
- Combine: For reactive state and event handling.
- HealthKit: Manages secure, structured data writes to Apple Health.
- Fitbit Web API: Fetches detailed health stats.
- Keychain: Securely stores tokens with built-in Apple security.
- UserDefaults: Used to persist the app's sync status locally.
UI highlights
The app was designed with a focus on a clean, professional user experience.
- Supports dark and light mode with dedicated app icons.
- Features elegant logout alerts and status feedback.
- Includes smooth login transitions and a visually structured dashboard.
- Uses clean metric cards to showcase step count, sleep hours, and other data.
Future plans
While the current version focuses on syncing core data, I plan to expand its functionality to include:
- Scheduled Auto Sync (e.g., a daily sync).
- Reminders & Alerts for missed syncs.
- Historical Data Import for deeper trend analysis.
- Flexible Sync Records to allow users to select which metrics to track.
Why I built it
I wanted to build something personally useful while diving into real-world challenges. This project gave me a chance to:
- Work with a live OAuth 2.0 flow.
- Use HealthKit responsibly and safely.
- Practice secure storage with Keychain.
- Apply Combine in a user-facing application.
- Build a polished product that solves a real need.
This project is a reflection of what I value: secure access to personal data, a clean UI, and custom-built workflows that solve specific problems.
Setup instructions
For those interested in running SyncMyFit with their own Fitbit Client ID, here are the setup steps:
-
Clone the repository:
git clone https://github.com/Barani2396/SyncMyFit.git
-
Create a
Secrets.plist
file at the project root (SyncMyFit/Secrets.plist
) with the following content:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>FitbitClientID</key> <string>YOUR_CLIENT_ID_HERE</string> </dict> </plist>
-
Open the project in Xcode and ensure the
Secrets.plist
file is added to your main target membership. -
Make sure you’ve configured your Fitbit Developer App’s redirect URI and whitelisted the necessary scopes (e.g.,
activity
,heartrate
,sleep
). -
Run the project on a physical iPhone. (Note: HealthKit requires a physical device to function.)
App preview
Watch a short demo of SyncMyFit in action
Final thoughts
SyncMyFit started with a simple personal need but evolved into a robust app that I now rely on daily. It demonstrates my ability to connect third-party APIs with native Apple frameworks, while designing with both security and a strong user experience in mind.
This is just the beginning, I plan to keep expanding SyncMyFit to support more health categories and personalized user workflows. As with any health-related tool, transparency, data integrity, and user trust will remain the pillars of its development.