Most calorie tracking apps are bulky and unintuitive. Calorie and nutrition tracking is a keystone of healthy living - but for most, it just takes too much time and effort. Caloreat is an app designed to streamline the process in a way never done before: just snap a photo of your meal, and we'll take care of everything else.
Tracking daily nutrition intake is a great method for ensuring healthy living - but wouldn't it be nice to stay healthy and not have to worry about the tedious steps of typing each individual food and then scrolling through a list? That's what inspired us to create CalorEats: an intuitive app that allows users to capture images of their food and automatically record its nutritional value.
What it does
Our app does what no other calorie app has done before: • Streamline the calorie tracking process to be as simple as possible • See your recommended number of servings for food categories, and track your progress throughout the day • Give alerts for diabetics and allergies
How we built it
For the image recognition portion, we used a Node.js backend with Express to make API calls to various APIs, including Google Cloud Vision API, Firebase, and multiple endpoints for nutrition and ingredient information. We then cleaned and filtered the data to obtain the food present in the picture. This was connected to our front-end, which was made using Framework 7 and ported to Android and iOS using Cordova and PhoneGap. The front and back ends communicate via HTTP Post and Get requests. We also made use of numerous other APIs to get information we needed, such as the nutritional value of the food.
Challenges we ran into
At first, we built our app as a web app, before realizing that we wouldn't be able to access the camera on mobile devices without deploying using HTTPS. As a workaround, we rebuilt our entire app using Cordova to make it run natively on Android. Given the time constraint that was our biggest challenge.
We also struggled with integrating Firebase with our backend as none of us had a lot of experience working with Firebase in a Node.JS app.
Finally, we struggled with using jQuery to continuously update our home page, although this might have only been challenging since at this point we were all running on fumes and caffeine.
Accomplishments that we're proud of
We are proud of how we decided to take initiative and learn many new technologies to make this project. We feel like we learned a lot thanks to this. Of course, we are also extremely proud of each other - it was a great (albeit sleep deprived) weekend! <3
What we learned
It was our first times doing many things! We were proud of learning:
- How to use Google Vision API
- How to use jQuery along with Firebase to update a web app in real time
- How to use Cordova to create an cross-platform application using HTML/CSS/JS
- How to use Node.js for backend development
- Learning about how to read and write to .json files
- How to work with various RESTful APIs
- Communicating between the Node.js backend and frontend
What's next for CalorEats
Well first of all, a good night's sleep for the team behind it. After, we want to add more features like customizable UI, additional nutritional information (available upon clicking on a food item) and the option for users to contribute to our AI's accuracy via reinforcement learning.