Back with an update on my FOSS calorie tracker!
github.com/femiaf13/manatee-fitness
Original post: https://lemmy.world/post/23645197
Hi all! Since my last post I've been hard at work on Manatee Fitness. I polished the core functionality and ended up feature creeping myself. I wasn't intending to add weight tracking or goal calculations but once I got into a groove I just kept going.
The most exciting part is that I finally have a real icon!
Beyond that, I figured out how to build an APK via github actions so now anyone willing to give the app a try is able to easily download and install it! I welcome any feedback from users. One important thing to keep in mind before trying it out is that it is currently focused on foods available in the US. I want to eventually expand the scope to more countries but I'll get to that once I have a stable release.
I'm also happy to take any contributions from the community! I have issues written up for all the bugs and new features on my current roadmap to the first stable release.
And finally, I want to give a shoutout to the 2 existing foss apps in this space that I know of:
My competitive drive to one up them is a huge reason I made as much progress on Manatee Fitness as I have.
17 Comments
Comments from other communities
Comments in Programming@programming.dev
I've never used a calorie tracker. But since it's FOSS, I'll try it. I'm an aspiring software dev and I'd like to help out. What is the best way to communicate with you?
Edit: I see that the app is available as released on the github. No need to build it.
Please think about localization and various labeling standards and such. I live in Japan and bought a subscription to Chronometer when MyFitnessPal decided to enshitify. I was submitting labels with barcodes and information in their appropriate boxes (protein, carbs, etc.) but they rejected it because the image (required picture) had non-English text. Apparently there is (or at least was) a manual review process and they rejected everything not in English. Further, it took either weeks or months (I forget now) for the first response to my submitted data to come so I kept putting all this time into something utterly useless. They lost me as a customer as well.
I'm down, using a cracked fitness pal to count calories right now. How will you build the food database? Can we crowdsource? Just ideas for now, get the basic app running and I'd love to help further.
Any thoughts on getting this into f-droid?
The food database is initially loaded with info from the USDA! That covers generic stuff like eggs or milk. Anything new is either added manually or sourced from the Open Food Facts database which is already crowdsourced.
I'm prioritizing Google Play but after that's settled I'm open to f-droid as well. Most of the people I know that'll benefit from this app the most wouldn't know how to even install f-droid.
As a career full-stack dev with over 8 years Angular experience and a former user of MFP and MacroFactor I'm totally interested in helping out.
Will pull stuff down and take a look soon!
I'd love to hear your thoughts! I've only got 2ish years of experience with Angular myself. I'm also using this project as an excuse to get familiar with signals so I'm better equipped to introduce them at work.
Probably can't take a lengthy dive until tomorrow or Monday but would love to chat.
Signals are relatively new to Angular (but not Vue or React), but IMO are a nice addition if used correctly.
Are you aware of Waistline, and are there any points of differentiation you're after?
I actually shout out Waistline in the first paragraph of the README haha
On a technical level, the major differences between the two are Waistline uses Cordova and a key value DB while I use Tauri+Angular and SQLite.
On a non-technical level, I think Waistline's UX is a bit rough around the edges. For example, when adding something to a meal Waistline will add only 1 serving and then I have to go back in and edit that. Manatee Fitness will immediately bring you to the quantity form after selecting the food to make it more seamless.
I absolutely love Waistline and appreciate the project! I just wanted to take my own crack at it with a modern framework and see if I could improve my personal pain points.
I feel like, even on the Github page (targeted at technically-minded folks), you should still lead with the non-technical differences instead of the technical ones. In other words, change that first paragraph in the README to include the info from your third paragraph here.
Waistline (Libre calorie counter and weight tracker)
https://f-droid.org/packages/com.waist.line/
My wife really likes manatees, hence the name.
You sure it's not because it's meant to be insulting "motivating?" I was audibly shocked when I read it, LOL.
Yeah the name might stunt growth a bit. I immediately was reminded of this: https://www.forbes.com/sites/jeffbercovici/2013/04/03/whoops-target-inadvertently-offers-manatee-dresses-for-plus-size-women-twitter-notices/
He points out that "Manatee Gray" is a color found on many products across a range of categories on the Target website, some of them in women's regular and even petite sizes.
In this case, he says, there were two different teams of buyers responsible for the "missy" and plus-size product lines, and the teams didn't coordinate when they inputted the product information for the site. One team apparently used the color's official name, while the other eyeballed it.
"We apologize for any discomfort this might have caused and are working to update the name of the dress to reflect Dark Heather Gray," Thomas told FORBES.
They totally should've doubled-down and normalized all the sizes to "manatee gray," LOL.
Just looking at the github here are my immediate ideas:
- Be able to favorite specific meal combinations (i.e. you eat the same breakfast all the time) for recording
- The meal display uses kcals as the subline, it would be useful if this could be set to protein, or carbs for people trying to hit different non calorie targets.
- Ability to set alerts/reminders if falling behind a target (like 60g of protein every 4 hours, etc)
- allow for food diary photos, i.e. take a snapshot now and fill it in later, or just so a buddy can see what you ate.
- Since so much data is already being tracked, allow for weighins, ketones, gluecose measurements to be tracked as well, or integrate with the android health-connect api
- allow for api access to user data, for those tinkerers / automators
Oh dang. I don't calorie track anymore, but back when I used MyFitnessPal I think they let me scan barcodes without a subscription… thanks for making this for those who need it!
I used Fitbook on fdroid for a bit. The best feature was support for weighing food to get calories.
My biggest frustration with apps today is the lack of support for home cooking. I cook most all food but it is a pain get nutritional information unless it comes from a box.
Ive been trying to find a tool that will let me dump in all ingredients by volume/weight so I know the caloric value of a meal. CooksIllustrated uses this https://api.edamam.com/ but I can't find an easy way to bring dishes from magazines or cookbooks to it
There's one called Energize on F-Droid already that's decent.
The problem is the food database will never be as good as the commercial versions. MFP is trash but MyNetDiary is very good and doesn't have obtrusive ads. It nags you to upgrade to premium occasionally but it's not too bad.
Unless you solve the database problem magically I don't think there's much point...
Deleted by moderator
This is a great idea, I'll definitely give it a go. How do you want to receive feature requests/bug reports?
This sounds amazing! I will also put here there's also chronometer that has a lot of the same functionality as fitnesspal but without the subscription, but you have to use an account.
I hadn’t heard of Tauri, but looks interesting. I’d like to pitch in, even if it’s just for code reviews. I have Apple stuff too to help with iOS builds
I'd love a good calorie tracker. I'm on the pedantic side and ended up using a fancy spreadsheet because none got as granular as I wanted /shrug
What data do you record, if I may ask, that's not tracked with such apps?
For me it was wanting to put in calories for each food item eaten in a day, the estimated calories burned in a day, then any additional burned calories from exercise, and then display the total of calories still "allowed" for that day, if that makes sense. My spreadsheet also had a whole bunch of stuff taking averages of my daily numbers so I could enter a weight goal and trend my weight loss to see when I could expect to get there, etc. it was a ludicrous spreadsheet, I admit it.
Cool. I'm currently using MacroFactor. How does this compare?
I've never used Macrofactor so I can't make a great comparison, the only commercial calorie tracker I've used is Lose It.
Major differences would be:
The food database - I don't know what Macrofactor uses but I use Open Food Facts and the USDA.
Manatee Fitness has zero monetization. No subscription, ads, or tracking. I never want to have access to my users data.
Macrofactor likely has a much more polished UI. I do my best but I'm far from a professional designer.
Hey, OP, do you have any thoughts about putting your app on F-Droid?
Seconding this! Having the ability to get update alerts helps me remember to install them.
...and/or adding .apk releases in github? (I doubt many will build from source)
The Apk is already added in the release.
Apologies: brain fart on my end.
For anyone using Obtainium: you'll have to enable "include prereleases" when adding manatee-fitness in order for Obtainium to find the apk
That's me! I've been looking for exactly something like this but don't have the knowledge to build from source.
The .apk is actually there (see other comment). You can sideload it manually or use something like Obtainium
Awesome!
Getting it on F-droid is on the to-do list once I'm confident I don't need to make any backwards incompatible changes going forward!
I have to say it looks very interesting, I was looking for something like that years ago and couldn't find it so I ended up paying for some app for subscription for two years, but it's always uneasy when they push your very personal data to their own servers.
I was very positively surprised that the first Korean package I scanned was already in the database, because the other app struggles with that a lot.
But the UI is nor really working well on my Samsung S24 Ultra:
https://imgur.com/a/POMrkji
And this is only on this view, the other views have similar problems like that text in the menu is centered for some reason instead of aligned left with the icons. Padding is very different for each widget and text, etc.
I still might end up using it anyway and hoping for a more consistent ui down the line anyway ^^
This is why getting more people to test is good! On both my phone and my wife's nothing is cutoff so I haven't run into these UI issues before.
The g for grams being all over the place is actually a bit intentional. For the nutrients it's a label that can't be changed which is why it's right aligned and grey. Serving amount is just a string so it could be anything. Serving quantity the g is actually a button to convert to different units which is why it looks different.
I understand that the overall UX is probably the weakest part of the app. I'm more of a backend engineer that dabbles in frontend haha
There is also Fitbook, in case you need more inspiration.
Do you know of anyone who has tried to build on iOS yet? I am tempted when I have some free time.
A few kind souls have offered to test an iOS build but never followed through. Please feel free to give it a shot though! There's likely an amount of additional setup you'd have to do for iOS that I haven't done since I have no way to build or test it. The Tauri docs will be your friend for this.
!fitness@lemmy.world might appreciate this