We were really inspired by Fitbit's motto of healthy living. And so we began to think about nutrition and came to realize that the vast majority of people don't realize the basic nutrients that they need on a daily basis (A very convenient method of managing your diet, before BitNutrition, was the Canadian Food Guide). Many people are aware of calories and even use their fitbit or an app like MyFitnessPal to track them. But nutrition goes beyond just calorie tracking. Rather, it involves monitoring key building blocks of your food such as carbohydrates and sodium as well as tracking specific vitamins and minerals. Of course, we can't expect the lay-person to know or care about these facts, but with BitNutrition, we hope to make the process much easier.
What it does
BitNutrition scans the barcodes of any food items and using that, it syncs all available nutrition statistics that are then tracked in the database. These nutrition statistics are presented on our ios/android app, and some especially key data is synced to FitBit! We then use these statistics to calculate which nutrients you are lacking and exceeding in as per the daily quotas and based on those values, suggest food for you to try next to even out your diet. These suggestions can be conveniently viewed on the FitBit as well as the mobile app.
How we built it
We started with the app which we built using react-native. We used Expo's camera to scan the barcodes and passed them into the Nutritionix API to get info on the food. Next, we parsed this data and pushed it to firebase so that we could sync with the Fitbit. We simultaneously began working on the Fitbit application. Using the REST API for firebase, we were able to link up Fitbit with our backend. After the barcode scanner, firebase and fitbit were working, we began work on the most important part of our app: nutrition tracking and food suggestion. Nutrition tracking was fairly simple: we already had the data and just had to put it together and parse it. For the food suggestion, we researched suggested values for each nutrient and we use those to determine if the user is lacking or in excess of a specific and the general group on nutrients. We wrote an algorithm to choose the optimal nutrition values for the next food and suggest foods by querying the Nutrionix API.
Challenges we ran into
We struggled to integrate a database with the Fitbit. We weren't sure what kind of database to use and how it would work but eventually, through the help of the Fitbit mentors, we discovered that we can make http requests on Fitbit and so, we used the firebase REST API. We also could not find a great way to suggest new foods. We came up with a few different algorithms to optimize search through discussion with mentors from ncr and google. Eventually, we settled on a simple but effective weighted average of the nutrients.
Accomplishments that we're proud of
We all tried a lot of new technologies and broadened our stack quite a bit. We also came together never having met before and worked pretty efficiently throughout.
What we learned
What's next for Bitnutrition
We plan on adding a weight that prioritizes to some extent foods that can be bought cheaper from grocery stores using coupons in order to incentivize a healthy lifestyle.
We also want to improve our nutrition algorithm by tailoring to the daily nutrition needs of a specific consumer (height, weight) rather than using a general standard for each age group from the Canadian Food Guide.