Eat your leftovers!!
What it does
Snapcook is an app that takes a picture of food ingredients, and then generates a list of recipes that uses those ingredients. The idea is that, if an individual has some miscellaneous food items around their kitchen, they can snap a photo of them. From here, they will be provided a list of recommended recipes based on the images that were taken.
Snapcook allows for users to potentially experiment with new recipes based on the items they decide to snap, making users use up items in their fridge and create new interesting food creations while limiting waste and saving users money!
How we built it
The overall App was built around Java in Android studio - however the actual functionality of the app was made possible thanks to IBMs Watson API. Specifically - their visual recognition API. We went through the process of scraping images off the web of specific classes that we wanted our model to recognize. From here, we would "clean" the data, removing any unwanted images from the collection. Finally, we would input the data into the Watson API and train based classification of the images. We did this for approximately 1700 images between ~12 classes to achieve a model that is accurate and usable on a mobile device.
Challenges I ran into
The biggest challenge that we've ran into was trying to implement the Watson API to our Android app. While trying to implement the visual recognition Watson API into our app, we struggled to locate why our program wasn't working, and why we could not properly communicate with the API. We continuously asked questions to our peers, sponsors and mentors to find a solution only to find one while going against the conventional API documentation.
Accomplishments that we are proud of
The largest accomplishment we are proud of is solving the issue with visual recognition on Watson API - we had to find an answer which wasn't right in front of us, outside the conventional documentation and different to everyone else's issues and problems. We relied heavily on this API for our hack to work, and in the end of the day we got it working to a level that satisfies us.
What I learned
@Adrian: Hack the North allowed me to continue to expand my knowledge of Android development and APIs that I would not regularly use. I was able to take charge of the Android development within this team, developing the app practically from scratch while learning a new API, IBM's Watson API, and how to integrate it into our system. It was an amazing experience learning how to integrate this API into our application and only furthered my passion for Android development.
@Aaditya Hack the North was a great learning experience for me. With the use of multiple API's, I took for granted that they would work as intended with minimal effort. With our use case being really specific, integrating these APIs took far longer than expected and limited our ability to meet our goals in terms of the features in the app. Next time, I would leave extra time to debug as API documentation can be outdated and not accurate to what the API is actually doing.
@Zi Jian ( Jack ) Hack the North was great, the take away for me this time was that implementing the API is not always an easy process. Being able to work with IBM's API for visual recognition was a fantastic learning experience for myself, expanding my knowledge of machine learning models and training practices for the future.
What's next for Snapcook
Moving forward, theres multiple different APIs and usages we would like to incorporate into our app.
The usage of survey monkeys' API to allow users to rate the recipe they were given, or the meal they ate at the end of the entire process. Full login processes through Google Firebase, saving user data and using it for future purposes
Snapcook is built with the following:
Java Android Studio IBM Watson API