In the United States, 40% of produced food is not consumed, according to the National Resources Defense Council. This equates to a shocking value of 218 billion dollars worth of food wasted every year in the US. A chunk of this food wastage is due to throwing away expired food. It is understandable that with everything going on in one's busy life, sometimes it may be hard for them to keep track of when each food item in their fridge is nearing expiration. With this being said, we seeked to create an application which would alleviate stress for users by allowing them to check the status of their food items in a convenient way, all on one place - their phones. This way, we hope that ShelfLife results in people realizing when their food is about to go bad, so they have ample time to consume it and thus not contribute to food waste.
What it does
ShelfLife provides a way for users to stay constantly updated on the quality of their purchased food items. When a user purchases a new food product, they can use the robust and easy-to-use ShelfLife app to take a picture of the item's barcode and expiry date label. ShelfLife will efficiently gather the information about the food item along with its expiry date, and store it along with the rest of the user's other products on the app for easy-access. The app associates a colour to each food item depending on the quality of the product to result in a visually-powerful reminder when products near their expiry date. For instance, when a food item has a green background, users will automatically know that they don't have to worry about that product for a while, whereas if the colour is red or yellow, they might need to take action. Moreover, users won't have to stress to remember when each of their food products expire - the app will send them scheduled text messages when it comes closer to those expiry dates to alert the user.
How we built it
We built ShelfLife with a myriad of tools and technologies. CockroachDB was used as our main database, which stored all the food item details of each person utilizing ShelfLife. The iOS app was constructed with Swift, and Flask was used as the back end of the application with all the GET/POST requests. Our server runs off Google App Engine mainly because its robust and scalable. Google's MLKit was used to be able to scan and retrieve information from the barcode of each food item, and we gathered the descriptionable information/picture of the food item via Selenium and Beautiful Soup (web-scrapers). To extract the expiry date from the user's picture of the expiry label via OCR, we used Google Cloud Vision. We also utilized Google Cloud Storage to store all our files due to security, and accessibility over many networks. And for authentication purposes for user security, the app utilized Firebase Authentication. We also used Vonage's SMS API to send scheduled messages to users at certain day intervals to alert/remind the individual when their food items are nearing expiry. Finally, we also used Google Cloud Platform.
Challenges we ran into
Due to the hackathon being forced to be online, it was hard to communicate with other team members as it was more restricting than when members are able to communicate face-to-face. Another major challenge that we faced was strategically dividing tasks amongst the team members in accordance with each individuals' expertise. With time, we were able to assess each others' skills and divide work accordingly to achieve our goal.
Accomplishments that we're proud of
We're proud to have built a fully-functioning application in such a short time, which seeks to reduce the drastic amount of food wasted every year, which is something we're passionate about. Moreover, each of us tried our best to work with a tool/technology which we haven't used much before, so that the learning experience was maximized.
What's next for ShelfLife
To further help eliminate the wastage of food in the future, we would be interested in adding more features to ShelfLife, such as to be able to recommend and schedule certain receipes incorporating the foods which are about to expire. Not only will the actual food items play a role in these receipes, but also the ranking of time-spans before expiry of an individual's items would determine priority to which of their products must be utlized in receipes. This way, not only would individuals be alerted of which of their items are about to expire, but also would be presented with a pro-active solution on how to deal with the said food products. With this feature, ShelfLife would further alleviate stress, and in the long run, aid towards fighting food wastage.