Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/CodeWithCJ/SparkyFitness/llms.txt

Use this file to discover all available pages before exploring further.

The SparkyFitness native mobile apps for iOS and Android bring your self-hosted fitness tracker to your phone, providing Apple Health and Google Health Connect synchronisation so that steps, workouts, sleep, vitals, and other health metrics recorded on your device flow automatically into your SparkyFitness diary and check-in logs. Both apps connect directly to your own server — no third-party cloud intermediary ever touches your data.
The SparkyFitness mobile apps require HTTPS. An HTTP-only deployment will not work. You must configure a reverse proxy with a valid TLS certificate before connecting the mobile app to your server. Self-signed certificates are supported but are not actively tested on every release. See the Proxy / HTTPS Setup section below for details.

iOS App

The iOS app is available on the App Store and through the TestFlight beta programme.

Download on the App Store

The stable release of SparkyFitness for iPhone and iPad.

Join TestFlight Beta

Get early access to new features and updates via Apple TestFlight.

Apple Health Integration

The iOS app reads data from Apple Health (HealthKit) and syncs it to your self-hosted server. The following metrics are supported on iOS:
CategoryMetrics
CommonSteps, Active Calories, Total Calories, Heart Rate, Weight, Sleep Session, Distance, Exercise Session
VitalsBlood Pressure, Basal Body Temperature, Blood Glucose, Body Temperature, Resting Heart Rate, Heart Rate Variability (SDNN), Respiratory Rate, Blood Oxygen Saturation, Blood Alcohol Content
Body MeasurementsBody Fat %, Basal Metabolic Rate, Lean Body Mass, Height, Bone Mass, VO2 Max
NutritionNutrition (calories + macros), Hydration
ReproductiveMenstruation Flow, Menstruation Period, Ovulation Test, Cervical Mucus, Intermenstrual Bleeding
ActivityFloors Climbed, Wheelchair Pushes
MobilityWalking Speed, Walking Step Length, Walking Asymmetry %, Walking Double Support %
RunningRunning Speed, Running Power, Running Stride Length, Running Ground Contact Time, Running Vertical Oscillation
CyclingCycling Speed, Cycling Power, Cycling Cadence, Cycling Functional Threshold Power
Apple Activity RingsApple Move Time, Apple Exercise Time, Apple Stand Time
The app also supports writeback from SparkyFitness back to Apple Health for Nutrition and Hydration records, so food you log in the diary can appear in the Health app.

Requirements

  • iPhone or iPad running a supported version of iOS
  • Apple Health enabled on the device
  • Self-hosted SparkyFitness server accessible over HTTPS

Connecting to Your Server

1

Open the SparkyFitness app

Launch the app after installing it from the App Store or TestFlight.
2

Navigate to Settings

Tap the Settings icon within the app.
3

Add or edit your server

Tap your server entry to edit it, or tap the + button to add a new one. Enter your server’s HTTPS URL (for example, https://sparky.yourdomain.com).
4

Grant Health permissions

The app will request permission to read the health metrics you want to sync. Approve the metrics in the iOS Health permissions sheet.

Android App

The Android app is available as a direct APK download and through a Google Play closed beta.

Download APK from GitHub

Download the latest SparkyFitnessMobile.apk from the GitHub Releases page and sideload it on your device.

Google Play Beta

Join the closed beta via the Google Play beta group first, then install from the Play Store.
To join the Google Play beta, first join the Google Groups beta programme and then access the Play Store listing.

Google Health Connect Integration

The Android app reads data from Google Health Connect and syncs it to your self-hosted server. The following metrics are supported on Android:
CategoryMetrics
CommonSteps, Active Calories, Total Calories, Heart Rate, Weight, Sleep Session, Distance, Exercise Session
VitalsBlood Pressure, Basal Body Temperature, Blood Glucose, Body Temperature, Resting Heart Rate, Heart Rate Variability (RMSSD), Respiratory Rate, Blood Oxygen Saturation
Body MeasurementsBody Fat %, Basal Metabolic Rate, Lean Body Mass, Height, Bone Mass, VO2 Max
NutritionNutrition (calories + macros), Hydration
ReproductiveMenstruation Period, Ovulation Test, Cervical Mucus, Intermenstrual Bleeding
ActivityFloors Climbed, Speed, Power, Elevation Gained, Steps Cadence, Cycling Pedaling Cadence, Wheelchair Pushes
The app also supports writeback to Health Connect for Nutrition and Hydration records.

Requirements

  • Android device with Google Health Connect installed (available from the Google Play Store)
  • SparkyFitness server accessible over HTTPS

Connecting to Your Server

1

Install and open the app

Install the APK or the Play Store beta build and open the SparkyFitness app.
2

Open Settings in the app

Tap the Settings icon.
3

Add your server URL

Tap your server entry or the + button to add a new server. Enter your HTTPS server URL.
4

Grant Health Connect permissions

The app will request read permissions for the health metrics you want to sync. Approve the requested permissions in the Health Connect permissions screen.

Proxy / HTTPS Setup

Because Apple and Google both require HTTPS for apps that communicate with remote servers, your self-hosted SparkyFitness instance must be served over TLS before the mobile app can connect to it.
Self-signed certificates are supported in the mobile apps, but they are not actively tested on every release. For the most reliable experience, use a certificate from a public CA (e.g. Let’s Encrypt via a reverse proxy).
Common approaches for adding HTTPS to a self-hosted SparkyFitness deployment include placing it behind Nginx, Caddy, Traefik, or a tunnel service such as Cloudflare Tunnel or Pangolin.

Proxy Tunnel Headers (Pangolin example)

Some proxy tunnels require a special authentication header to be sent with every request. The SparkyFitness mobile app supports custom headers for this purpose.
1

Get your share token from Pangolin

Open your Pangolin dashboard, click Links in the sidebar, and click Create Share Link. Choose your resource, enter a title and expiration date, then click Create Link. Under the QR code, click Usage Examples to see the header name and value — copy these down.
2

Open the server settings in the app

In the SparkyFitness app, navigate to the Settings screen and tap on your server entry (or add a new one).
3

Enter the header information

Enter the header name and value that you copied from Pangolin. If you need to add more than one header, tap the + button to add additional fields.

Troubleshooting

Getting a Diagnostic Report

If you encounter issues with the mobile app, the built-in Diagnostic Report tool is the fastest way to collect information for debugging.
1

Open Settings in the app

Tap the Settings icon and scroll all the way to the bottom of the settings screen.
2

Tap Diagnostic Report

Find and tap the Diagnostic Report option. The app generates a report containing logs, configuration details, and system information.
3

Share the report

Save the report to your device or share it directly with the developers via Discord or as an attachment on a GitHub issue.
The diagnostic report contains no personal data. All health, food, and exercise data is excluded.

Common Issues

  • Confirm your server URL starts with https:// — HTTP is not supported.
  • Check that your TLS certificate is valid and not expired.
  • If you are using a self-signed certificate, ensure the app has been configured to trust it (behaviour varies by OS version).
  • If using a proxy tunnel, verify the tunnel is active and that any required headers are correctly entered in the app’s server settings.
  • Open the app’s Settings and verify that the individual metrics you want to sync are enabled.
  • Confirm that the required permissions have been granted in the iOS Health app or Android Health Connect settings.
  • For background sync, ensure the app has background refresh / background data permissions at the OS level.
  • Check the Diagnostic Report for specific error messages that may identify which metric or permission is causing the issue.
  • Certificate errors typically indicate that the server’s TLS certificate cannot be verified by the device.
  • Ensure your certificate is issued by a trusted Certificate Authority or, if using Let’s Encrypt, that the chain is complete.
  • Self-signed certificates are accepted by the app but may require additional OS-level trust configuration on some devices.
  • If the error persists, generate a Diagnostic Report and share it with the community on Discord for further help.

Build docs developers (and LLMs) love