Imagine if you flushed forty dollars down the toilet for every hundred that you made. Ridiculous, right? But that’s the reality of the U.S. agriculture industry, where nearly 40% of all food produced ends up uneaten.

American grocery stores throw out 43 billion pounds of food annually. But what’s more shocking is that most of that food is fine to eat. But it still ends up in the landfill because of cosmetic imperfections, arbitrary sell-by dates, or damaged packaging.

And yet, with all of that food waste, nearly 10% of all U.S. households struggle to afford meals; this clearly tells us that there is a fundamental problem in how food is distributed and sold.

What it does

Refood is a web app that allows grocery stores and supermarkets to sell slightly imperfect foods, like creased cereal boxes or blemished tomatoes, instead of throwing them away.

With Refood, grocery stores can advertise and host “Refood Events” in their local communities. During the event, the grocery store will sell imperfect foods that are still good to eat, but at a steeply discounted rate, which is especially beneficial to lower income households.

Ultimately, Refood creates a market for the supply of imperfect food and demand from value-conscious consumers. Shoppers can sign up for local Refood Events on the website, allowing them to save on their groceries while simultaneously reducing food waste. Grocery stores can see who has signed up for their events on the website and make a profit from the imperfect foods being sold.

How we built it

We built our application with HTML, CSS, and JavaScript using the React framework, and we used the Google Maps API for rendering the event maps on our website. Our backend was created using a combination of Cloud Firestore and Firebase’s Realtime Database.

Challenges we ran into

Our main challenge was connecting the React frontend to the Firebase backend. When manipulating the data for the Google Map markers, we first tried Firebase's Cloud Firestore. But after running into latency issues, we decided to use Firebase's Realtime Database, which is a more traditional noSQL database using a JSON base. Thus, while the user sign up system still uses Firestore, the Google Map markers are saved using the Realtime Database.

Implementing Google Places API also proved to be challenging. The Google Places API is used to create address input fields and convert addresses into latitude and longitude, which is necessary to position the map markers. However, certain CSS rules made integrating the Google Places API into the address field of forms difficult. Because of the hackathon's time constraints, we decided that sticking with latitude and longitude in the form would be a better user experience than having a semi-functional address bar.

Accomplishments that we're proud of

We’re proud that we've developed a project that takes an innovative approach to solve one of our world's most pressing challenges. Seeing the project transform from an idea into a working product with a clean UI and backend was truly exciting. We’re also grateful for our team's dedication to the project and solving the problem of food waste and food insecurity.

What we learned

We learned about how to integrate the stored information in the Firebase backend with the React frontend.

What's next for Refood

First of all: changing the latitude and longitude fields of the fields into an address is a must. For the UI, we plan to add a recommendation feed, calendar view, and a notification system that will allow users to search for Refood Events more efficiently. Refood also aims to implement a strict verification system for grocery stores and supermarkets before they are able to create an event.

In order to gain a critical mass of grocers and users, we plan to reach out to local grocery stores 1-on-1 in order to pitch Refood and help them organize their first Refood Events. Once critical mass is attained, the platform with become both more attractive and more self-sustaining due to the network effects of a larger userbase.

Built With

Share this project: