This project for MinneHacks 2019 is built to solve the problem of the 133 billion pounds of food wasted every year in the U.S. A large portion of which comes from farmers who have excess food that they can't get rid of.
What it's about
Our site lets farmers post their location, type of excess, and price to our database, and then local community members can enter their location and get customized recipe suggestions using nearby farm excesses. This is great both for solving both one of the worlds greatest causes of waste, and allowing organizations such as homeless shelters or churches to have access to fresh food in bulk at below market prices.
How I built it
The project is built in three main parts: We have a website which is where the farmers and users can sign up and sign in. A middle area which takes care of storing and retrieving data from the the Google cloud database and a back end that uses the data to produce helpful results such as finding nearby farmers or finding recipes for certain food products.
The middle area uses node and mysql to store and retrieve data from the Google Cloud Platform database, as well handles the transition of data from the website to the database and to the back end
The backend uses python, Google Distance Matrix API, and Google Geocoding to find farmers that are within a reasonable and configurable travel distance, figure out what their excess product is from the information provided in the middle end, and then scrape recipes off of allrecipes.com that use those excess ingredients to report back to the user
Challenges I ran into
On the back end there were constant problems with performance of scraping websites repeatedly to get data of potentially hundreds of recipes that don't match ingredient criteria. To fix this we instead selected a large number of handpicked recipes and cached that data in a json file to significantly improve performance from ~30 seconds to under a quarter of a second.
Figuring out how to interact with any of Google's api's was a struggle for all parts involved, but once we did they were great to work with
Accomplishments that I'm proud of
Successfully implemented a sort of agile development to get our work done by separating it into sprints.
We tackled areas we had no experience in and make a working program.
We came up with a good solution to a very tough problem.
What I learned
All the Google API's were new to us and learning to use those was a fun challenge. We also learned all about communicating across networks to different parts of a program. Learned how to work in a team in a way that everyone can do their own tasks in parallel
What's next for Farmers Excess
Routing deliveries of excess supply, Google home interaction, cooperating with people and communities across the U.S. to bring this wastefulness to an end!