SyncMyFit - Cover Image

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:

  1. Clone the repository:

    git clone https://github.com/Barani2396/SyncMyFit.git
    
  2. 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>
  3. Open the project in Xcode and ensure the Secrets.plist file is added to your main target membership.

  4. Make sure you’ve configured your Fitbit Developer App’s redirect URI and whitelisted the necessary scopes (e.g., activity, heartrate, sleep).

  5. 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.

Feel free to check out the live demo or dive into the

source code

.