Most of the members on our What's Cookin'? team enjoy cooking, and we realized one of the biggest problems with home cooking is keeping an organized pantry and refrigerator. We realized that it is very hard to keep track of exactly what is in our pantry and refrigerator, which typically leads to the buying of unnecessary goods that we already have and/or accidentally letting the food we do have go bad. This food waste is both taxing on our pockets as well as the environment.

What it does

To counter this problem, we created What's Cookin'?, an Android app that serves as a digital pantry/refrigerator. Using this app, users scan the barcodes' of ingredients and food they buy, which can then be stored in What's Cookin'?'s digital pantry. For produce and other foods without barcodes, we also have a simple-to-use manual input option.

In addition to the digital pantry, What's Cookin'? also has a "smart" recipe suggestion option. Given the ingredients currently in a user's digital pantry, What's Cookin'? is able to suggest recipes based on those ingredients. Thus, users no longer have to worry about scouring the web, looking for recipes, only to find they're missing a key ingredient!

Lastly, What's Cookin'? will incorporate an additional, top of the line security feature in the form of Blockstack. All user data, from preferences to pantry makeup, will be stored and encrypted using Blockstack's platform, and no one will be able to access users' data without their permission.

How we built it

What's Cookin'? is built with a combination of languages, tools, and libraries all intricately connected together. For the front end, we use Android Studio (coded in XML and Java) as the foundation. In addition, we used Google's Vision API to scan barcodes to various ingredients and foods. Within various parts of the Android app, we used Webviews to connect to a web app with Javascript functionality. These Webviews, web app, and connected web server allowed us to seamlessly connect many disparate parts of What's Cookin'? that are all written with different languages and tools, one of which is Blockstack. Regarding BlockStack, we tried to used this tool as a product to implement secure login as well as secure storage of the encrypted data of our users. To ensure security and data integrity, BlockStack will essentially be the middleman connecting the front end with the back end. With regards to our backend, it is primarily rooted in a webserver made with Flask. This webserver has Python functions connected with Google-custom-search API to parse to find recipes customized to the users' pantries. Our webserver is also connected with MongoDB Atlas to help us organize and standardize ingredients and other food products.

Challenges we ran into

While creating What's Cookin'?, we ran into quite a few problems. We initially weren't really sure what project and problem to tackle. We ended up juggling many different ideas and ended up spending basically the entirety of the first day discussing before settling on an idea. Thus, we didn't really start the coding for What's Cookin'? until the morning of the second day, so we were in a race against time to get everything done. In addition we were really interested in using both MongoDB and BlockStack, neither of which any of us had used before, so we struggled a lot to get these tools to work as we wanted them to. In particular, we found it extremely difficult to get BlockStack to work with Android studio. There was supposed to be a way to get it to work and even following the developer's tutorial step by step, we still were unable to get it to work after around six hours of work. In the end, to get around this problem, we tried to connect Blockstack with a Webapp and used Webviews in Android so as to access the Webapp from the app. Even then, we were unable to rectify the Blockstack code with the code we had already written, so it isn't fully integrated.

Accomplishments that we're proud of

We are extremely proud of the fact that we were able to get a product of this scale finished in around 22 hours (since we started a bit late). More specifically, we are really proud of successfully getting BlockStack to work (despite not being integrated). None of us knew anything about BlockStack before, and all but one of us had no javascript experience either. But most of all, we are proud of the fact that we were able to figure out a way to connect all the completely different parts, which was extremely satisfying to see.

What we learned

We learned a lot from creating this product. None of us knew anything about MongoDB or BlockStack before we started, so we had to learn a lot about those two tools. We also had to learn to use Google Vision for the barcode scanning and using WebViews to connect Android Studio to our webserver. On a larger scale, we learned that there are a lot of potential unique applications for blockchain. Lastly we learned to be extremely flexible in high pressure situations, as this project forced us to pivot often.

What's next for What's Cookin'?

If potentially taken to industry, we would first iron out any bugs we may have and improve the UI to make it more intuitive and aesthetically pleasing, and remove Webviews so the front end is completely integrated into Android. We would also fully populate our database with ingredients and food products, and ideally partner with a recipe website like Allrecipes, so that we would able to directly access their database of recipes for more efficient customized recipe retrieval.

Share this project: