I’ve never counted my calories because of my high metabolism, but since going back to the gym last year, I’ve needed to increase my food intake to gain weight. However, my progress has been slow because I’m not being disciplined with my diet, which is why I’m hoping that a calorie and fitness tracker can set me on the right path. MyFitnessPal is a popular and obvious choice. Unfortunately, I never went back to the app after— according to HaveIBeenPwned—I lost my account information in a 2018 data breach.
While scouring for an alternative, I came across SparkyFitness, a self-hosted, open-source passion project that has the potential to be an alternative to MyFitnessPal. At a glance, SparkyFitness offers many of MyFitnessPal’s premium features, which are locked behind a subscription.
In addition to tracking calories, meals, workouts, and water consumption, SparkyFitness supports picture logging (if you link it to an optional AI service) to estimate the caloric content of a meal from a picture, and barcode scanning to automatically pull data for store-bought foods. These features are locked behind a subscription fee in MyFitnessPal. Although it’s missing integrated recipe recommendations and voice logging, the self-hosted SparkyFitness does keep my fitness data local and out of reach of third parties.
The setup
A few commands in Docker are all it takes

It only takes minutes with Docker. After cloning the Git repo, SparkyFitness can be deployed in Docker in minutes. The app comprises three services: a PostgreSQL database, a Node.js backend, and an NGINX front-end. Once it’s ready, users can access the interface through the browser.
Feature-rich and keeps on getting better
Developed by essentially one guy, to boot
What surprised me was that despite being created by a small team, the app feels well-composed. The colorful, minimalistic interface is easy to read and without distracting elements. Each tab groups similar functions together, and I never had to second-guess where to look when I wanted to change something. Meal and workout planning is already time-consuming enough; it’s good that I don’t have to wrestle with the app to add to the pain.
With multi-account support, SparkyFitness can be shared with friends and family. The Diary page, where I track my meals, sits front and center when I log in. I appreciate the glanceable overview to see if I’ve hit my calorie targets. In addition to summarizing the nutrients I’ve consumed throughout the day, it also ties into the Goals tab, where I can set how much I aim to eat per day. While I thought I had a rough idea of how much I was eating, plugging my meals into actual numbers paints a stark contrast to my expectations. In short, I’m falling way short of my goals. Time to step it up.
Before getting there, though, I had to build a nutrition database for the foods I’m eating. Like other fitness apps, SparkyFitness integrates with many food and exercise data providers, including Open Food Facts, Nutritionix, and Wger, and allows manual entry for specialty foods. Open Food Facts is great for quickly pulling information on brand-name foods, like instant ramen or condiments. Nutritionix is better for whole foods, like rice, chicken, and pasta. It also returns results much faster than Open Food Facts. Once added, the information is reusable, and the app will adjust the nutritional value based on the amount consumed.
As convenient as it is, the data providers — especially Open Food Facts — don’t get it right all the time. For example, its nutritional value for the Maple Leaf brand bacon is way off. Nutritionix is more reliable and consistent, but I often find myself cross-referencing with another source to make sure they’re accurate.

SparkyFitness has some impressively detailed reports to keep me updated on my progression.
Aside from information accuracy, there are a few minor bugs that need squashing. Oddly, I often received nutrition results in French and Spanish. Setting a language preference isn’t available yet, so in those cases, I’d fall back to manual entries. The manual entry option also doesn’t include a few common micronutrient options, such as vitamins D and B.
Besides tracking foods, SparkyFitness also tracks my workout routines. I haven’t migrated my Excel spreadsheet into the app yet because transferring all my weight progression is too cumbersome, but if I ever start a new program, I’ll give it a shot in SparkyFitness first. Moreover, it syncs with the Garmin Connect microservice, which I can’t test out because I don’t have a Garmin fitness device.
All the nutrition and exercise data are condensed and presented in graphs, charts, and tables in the impressively detailed Reports section. Additionally, I can input my body measurements, workout routines, and weight progression. All the data are exportable, so I can share them with my trainer.
Being just around two months old, the mobile app only has limited data syncing functions. 

It’s clear that SparkyFitness has a lot going for it. However, it does lag in the mobile apps department. Available on Android only, SparkyFitness is limited to syncing Google Health Connect activity data to the SparkyFitness server. Apple iOS users will need to use an Apple Health shortcut. Also, the app isn’t published in the Google Play Store, so you’ll need to sideload it onto your smartphone by downloading the APK.
It definitely has potential
A better mobile app can help
SparkyFitness is a great example of when passion turns into utility. CJ, the creator of the project, told me on Discord that the idea was inspired by others in the developer community when he started dabbling in self-hosting two years ago. A developer by trade, CJ said he has always enjoyed improving apps and making them more useful.
What began as a private project for his family quickly turned into a public one. According to its GitHub page, SparkyFitness is currently maintained by a small team of 12 contributors. The app is still a little rough around the edges and needs a fully-fledged mobile app for both Android and iOS to be a MyFitnessPal competitor, but its potential as a private, feature-rich alternative is highly enticing. I’ll be keeping an eye on its development.