{"id":101836,"date":"2025-10-28T06:28:08","date_gmt":"2025-10-28T06:28:08","guid":{"rendered":"https:\/\/www.newsbeep.com\/il\/101836\/"},"modified":"2025-10-28T06:28:08","modified_gmt":"2025-10-28T06:28:08","slug":"this-free-self-hosted-workout-app-has-the-potential-to-replace-myfitnesspal","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/il\/101836\/","title":{"rendered":"This free, self-hosted workout app has the potential to replace MyFitnessPal"},"content":{"rendered":"<p>I\u2019ve never counted my calories because of my high metabolism, but since going back to the gym last year, I\u2019ve needed to increase my food intake to gain weight. However, my progress has been slow because I\u2019m not being disciplined with my diet, which is why I\u2019m hoping that a calorie and <a href=\"https:\/\/www.xda-developers.com\/wger-guide\/\" target=\"_blank\" rel=\"nofollow noopener\">fitness tracker<\/a> can set me on the right path. MyFitnessPal is a popular and obvious choice. Unfortunately, I never went back to the app after\u2014 according to HaveIBeenPwned\u2014I lost my account information in a 2018 data breach.<\/p>\n<p>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\u2019s premium features, which are locked behind a subscription.<\/p>\n<p>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&#8217;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.<\/p>\n<p>                        The setup<\/p>\n<p>            A few commands in Docker are all it takes<\/p>\n<p>        <img width=\"1650\" height=\"798\" loading=\"lazy\" decoding=\"async\" alt=\"A screenshot of SparkyFitness services running in Docker\" data-img-url=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-docker-container-running.png\" src=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-docker-container-running.png\" class=\"img-brightness-opt-out\"\/><\/p>\n<p> 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 <a href=\"https:\/\/www.xda-developers.com\/why-use-excel-as-personal-knowledge-base\/\" target=\"_blank\" rel=\"nofollow noopener\">database<\/a>, a Node.js backend, and an NGINX front-end. Once it\u2019s ready, users can access the interface through the browser.<\/p>\n<p>                        Feature-rich and keeps on getting better<\/p>\n<p>            Developed by essentially one guy, to boot<\/p>\n<p>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\u2019s good that I don\u2019t have to wrestle with the app to add to the pain.<\/p>\n<p>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\u2019ve hit my calorie targets. In addition to summarizing the nutrients I\u2019ve 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\u2019m falling way short of my goals. Time to step it up.<\/p>\n<p>Before getting there, though, I had to build a nutrition database for the foods I\u2019m 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.<\/p>\n<p>As convenient as it is, the data providers \u2014 especially Open Food Facts \u2014 don\u2019t 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\u2019re accurate.<\/p>\n<p>        <img width=\"1650\" height=\"806\" loading=\"lazy\" decoding=\"async\" alt=\"A screenshot of SparkyFitness's graph view.\" data-img-url=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-reports.png\" src=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-reports.png\" class=\"img-brightness-opt-out\"\/><br \/>\n        SparkyFitness has some impressively detailed reports to keep me updated on my progression.\u00a0<\/p>\n<p>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\u2019t available yet, so in those cases, I\u2019d fall back to manual entries. The manual entry option also doesn\u2019t include a few common micronutrient options, such as vitamins D and B.<\/p>\n<p>Besides tracking foods, SparkyFitness also tracks my workout routines. I haven\u2019t 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\u2019ll give it a shot in SparkyFitness first. Moreover, it syncs with the Garmin Connect microservice, which I can\u2019t test out because I don\u2019t have a Garmin fitness device.<\/p>\n<p>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.<\/p>\n<p>                    <img width=\"960\" height=\"2134\" loading=\"lazy\" decoding=\"async\" alt=\"A mobile screenshot of the SparkyFitness mobile's stat reporting page.\" data-img-url=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparkyfitness-mobile-app.png\" src=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparkyfitness-mobile-app.png\" class=\"img-brightness-opt-out\"\/>Being just around two months old, the mobile app only has limited data syncing functions.\u00a0<img width=\"960\" height=\"2134\" loading=\"lazy\" decoding=\"async\" alt=\"A mobile screenshot of the SparkyFitness mobile app's logs page.\" data-img-url=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-android-app-3.png\" src=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-android-app-3.png\" class=\"img-brightness-opt-out\"\/><img width=\"960\" height=\"2134\" loading=\"lazy\" decoding=\"async\" alt=\"A mobile screenshot of the SparkyFitness mobile's setting's page.\" data-img-url=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-android-app-2.png\" src=\"https:\/\/www.newsbeep.com\/il\/wp-content\/uploads\/2025\/10\/xda-sparky-fitness-android-app-2.png\" class=\"img-brightness-opt-out\"\/><\/p>\n<p>It\u2019s 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\u2019t published in the Google Play Store, so you\u2019ll need to <a href=\"https:\/\/www.xda-developers.com\/how-to-sideload-apps-iphone-altstore\/\" target=\"_blank\" rel=\"nofollow noopener\">sideload<\/a> it onto your smartphone by downloading the APK.<\/p>\n<p>                        It definitely has potential<\/p>\n<p>            A better mobile app can help<\/p>\n<p>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.<\/p>\n<p>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\u2019ll be keeping an eye on its development.<\/p>\n","protected":false},"excerpt":{"rendered":"I\u2019ve never counted my calories because of my high metabolism, but since going back to the gym last&hellip;\n","protected":false},"author":2,"featured_media":101837,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[85,46,321,125],"class_list":{"0":"post-101836","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-mobile","8":"tag-il","9":"tag-israel","10":"tag-mobile","11":"tag-technology"},"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts\/101836","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/comments?post=101836"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/posts\/101836\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/media\/101837"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/media?parent=101836"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/categories?post=101836"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/il\/wp-json\/wp\/v2\/tags?post=101836"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}