All apps · 0 apps
SparkyFitness---Backend
Docker app from grtgbln's Repository
Overview
This is the backend container.
Readme
View on GitHubSparkyFitness
A self-hosted, privacy-first alternative to MyFitnessPal. Track nutrition, exercise, body metrics, and health data while keeping full control of your data.
SparkyFitness is a self-hosted fitness tracking platform made up of:
- A backend server (API + data storage)
- A web-based frontend
- Native mobile apps for iOS and Android
It stores and manages health data on infrastructure you control, without relying on third party services.
Core Features
- Nutrition, exercise, hydration, sleep, fasting, mood and body measurement tracking
- Goal setting and daily check-ins
- Interactive charts and long-term reports
- Multiple user profiles and family access
- Light and dark themes
- OIDC, TOTP, Passkey, MFA etc.
Health & Device Integrations
SparkyFitness can sync data from multiple health and fitness platforms:
- Apple Health (iOS)
- Google Health Connect (Android)
- Google Health API
- Fitbit
- Garmin Connect
- Withings
- Polar Flow
- Hevy (not tested)
- OpenFoodFacts
- USDA
- Fatsecret
- Nutritioninx
- Mealie
- Tandoor
- Strava (partially tested)
- Norish
- Yazio (uses unofficial API)
- Swiss Food Database
- Free Exercise DB (Github)
- Wger
Integrations automatically sync activity data such as steps, workouts, and sleep, along with health metrics like weight and body measurements, to your SparkyFitness server.
Optional AI Features (Beta)
SparkyAI provides a conversational interface for logging data and reviewing progress.
- Log food, exercise, body stats, and steps via chat
- Upload food images for automatic meal logging
- Retains conversation history for follow ups
Note: AI features are currently in beta.
Installation
Choose one of the two ways to run SparkyFitness:
1. Self-Hosted
Get a SparkyFitness server running in minutes using Docker Compose:
# 1. Create a new folder
mkdir sparkyfitness && cd sparkyfitness
# 2. Download Docker files only
curl -L -o docker-compose.yml https://github.com/CodeWithCJ/SparkyFitness/releases/latest/download/docker-compose.prod.yml
curl -L -o .env https://github.com/CodeWithCJ/SparkyFitness/releases/latest/download/default.env.example
# 3. (Optional) Edit .env to customize database credentials, ports, etc.
# 4. Start the app
docker compose pull && docker compose up -d
# Access application at http://localhost:8080
Note: For other self-hosted installation methods, refer to the documentation at https://codewithcj.github.io/SparkyFitness/.
2. Cloud (for non-technical users)
If you are not a technical user and prefer not to run SparkyFitness on your own server, you can deploy a hosted instance in the cloud using one of the following providers.
Note: These are independent third-party services. We encourage you to explore features provided by each provider to determine the one that best fits your needs.
🎥 Video Tutorial
Quick 2-minute tutorial showing how to install SparkyFitness (self-hosted fitness tracker).
Documentation
For full installation guides, configuration options, and development docs, please visit our Documentation Site.
Quick Links
- Installation Guide - Deployment and configurations
- Features Overview - Complete feature documentation
- Development Workflow - Developer guide and contribution process
- iOS App Info and Android App Info
Need Help?
- Post in Github issues/discussion.
- For faster response and get help from other community memebers Join our Discord
Star History
Translations
Repository activity
Contributors
⚠️ Known Issues / Beta Features ⚠️
SparkyFitness is under active development. Breaking changes may occur between releases.
- Auto-updating containers is not recommended
- Always review release notes before upgrading
The following features are currently in beta and may not have been thoroughly tested. Expect potential bugs or incomplete functionality:
- AI Chatbot
- Family & Friends access
- API documentation
Media gallery
Install SparkyFitness---Backend on Unraid in a few clicks.
Find SparkyFitness---Backend in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Requires separate SparkyFitness - Frontend and Postgres containers.
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allLinks
Details
codewithcj/sparkyfitness_server:latestRuntime arguments
- Network
sparkyfitness- Privileged
- false
Template configuration
Container Port: 3010
- Target
- 3010
- Default
- 3010
- Value
- 3010
Hostname or IP address of the Postgres server
- Target
- SPARKY_FITNESS_DB_HOST
- Default
- http://IP_ADDRESS
- Value
- http://IP_ADDRESS
Port number for the Postgres server
- Target
- SPARKY_FITNESS_DB_PORT
- Default
- 5432
- Value
- 5432
Name of the Postgres database
- Target
- SPARKY_FITNESS_DB_NAME
- Default
- sparkyfitness_db
- Value
- sparkyfitness_db
Username for the Postgres database
- Target
- SPARKY_FITNESS_DB_USER
Password for the Postgres database
- Target
- SPARKY_FITNESS_DB_PASSWORD
Username for the Postgres database
- Target
- SPARKY_FITNESS_APP_DB_USER
Password for the Postgres database
- Target
- SPARKY_FITNESS_APP_DB_PASSWORD
URL of the Garmin microservice (e.g., http://IP_ADDRESS:8000)
- Target
- GARMIN_MICROSERVICE_URL
- Default
- http://IP_ADDRESS:8000
- Value
- http://IP_ADDRESS:8000
URL where the frontend is accessible (e.g., http://IP_ADDRESS:3004)
- Target
- SPARKY_FITNESS_FRONTEND_URL
- Default
- http://IP_ADDRESS:3004
- Value
- http://IP_ADDRESS:3004
A 64-character hex string used to encrypt data. Generate with 'openssl rand -hex 32'
- Target
- SPARKY_FITNESS_API_ENCRYPTION_KEY
A secret key. Generate with 'openssl rand -base64 32'
- Target
- BETTER_AUTH_SECRET
Set to true to disable new user registrations
- Target
- SPARKY_FITNESS_DISABLE_SIGNUP
- Default
- false|true
Force email/password login to be enabled, overriding any in-app settings. This is a fail-safe to prevent being locked out if OIDC is misconfigured.
- Target
- SPARKY_FITNESS_FORCE_EMAIL_LOGIN
- Default
- false|true
Automatically grant admin rights to this email
- Target
- SPARKY_FITNESS_ADMIN_EMAIL
SMTP server hostname for sending emails
- Target
- SPARKY_FITNESS_EMAIL_HOST
SMTP server port (default: 587)
- Target
- SPARKY_FITNESS_EMAIL_PORT
- Default
- 587
- Value
- 587
Set to true if the SMTP server requires a secure connection (TLS)
- Target
- SPARKY_FITNESS_EMAIL_SECURE
- Default
- false|true
SMTP server username for authentication
- Target
- SPARKY_FITNESS_EMAIL_USER
SMTP server password for authentication
- Target
- SPARKY_FITNESS_EMAIL_PASS
Email address that emails will be sent from
- Target
- SPARKY_FITNESS_EMAIL_FROM
Path to the backup storage folder
- Target
- /app/SparkyFitnessServer/backup
- Default
- /mnt/user/appdata/sparkyfitness/backup
- Value
- /mnt/user/appdata/sparkyfitness/backup
Path to the uploads storage folder
- Target
- /app/SparkyFitnessServer/uploads
- Default
- /mnt/user/appdata/sparkyfitness/uploads
- Value
- /mnt/user/appdata/sparkyfitness/uploads
Logging level
- Target
- SPARKY_FITNESS_LOG_LEVEL
- Default
- INFO|DEBUG|WARN|ERROR
Node environment setting
- Target
- NODE_ENV
- Default
- production|development
Internal ort for API communication. Not recommended to change.
- Target
- SPARKY_FITNESS_SERVER_PORT
- Default
- 3010
- Value
- 3010
