The main page of FoodWatch. Accessible online, users can monitor and edit their grocery items.
Sample text message response. These responses were received from our users who used our app to track expiration dates of various food items.
FoodWatch is a platform that allows users to track and manage their groceries. Users can create, edit, and access their inventory, and receive SMS updates when expiry dates approach.
According to The Atlantic, about $160 billion of produce is thrown away annually in the US, often as a result of expiry. The idea for FoodWatch was inspired by a desire to reduce this amount of waste through creating a convenient way of reminding users of expiry dates, while also making grocery shopping easier by allowing users to access a catalog of what they already have back home.
What it does
FoodWatch operates via SMS messages between the user and the platform. To add items to their inventory (the groceries they currently have), the user provides a description and expiry date. To view their inventory, the user may send a message to FoodWatch, and is returned with a full list of items and their expiry dates. In addition, the user may also view their list online. The user may also remove items upon consumption; a user guide can be found below.
At time points of one week, three days, and one day before an item’s expiry date, as well as the expiry date itself, the user will also receive messages informing them of the upcoming expiry. The usage of SMS as a means of communication means that an internet connection is not required for checking or updating lists, and the list can be accessed via users’ mobile devices.
How we built it
We used the following technologies:
- User interaction via Programmable SMS on Twilio
- Database hosting on Firebase
- Frontend deployment on Flask micro-framework
The majority of the project was handled in Python. We used a Python Flask micro-framework to run the backend of our app. The Flask app is used to access and edit the Firebase database and send and receive SMS from a phone via Twilio.
- Add item to inventory: “add (quantity) (commodity name) (expiry date)”
- Viewing inventory: “pantry”
- Remove item from inventory: “remove (quantity) (commodity name) (expiry date)”
Challenges we ran into
Figuring out how to properly communicate to users via SMS messages was perhaps the largest challenge for us. None of us had experience with this. Coupled with the fact that none of us had used Firebase or Twilio for an app before either, just getting to familiarize ourselves with the different interfaces used to make our project.
Accomplishments that we're proud of
Our platform actually works!
What we learned
A lot. Most notably, however, we found that we learned the most about using Twilio's functions and the Firebase platform for supporting apps.
What's next for FoodWatch
Our main goal for improving FoodWatch would be improving accessibility. Mainly, we want to add compatibility with Google Home and Alexa, so that user inventory can also be edited through voice commands (e.g. using the Google Assistant API for Google Home).
Currently, we also have a way for users to access their inventory online, where all their items are listed via the Flask microframework. Aside from the task of finding web hosting and a domain name, in the future, we would like to set up an authentication system to ensure users access their own lists. This feature would add an extra level of convenience to checking groceries and upcoming expiry dates.