With the rise of Instagram, photos of food appear everywhere in our social media feeds. Yet, search engines for restaurants have failed to adapt to this rising trend; they require some sort of text description of what you are looking for. We want to bring restaurant search to the modern age by allowing users to find restaurants based on how they see food the most: images.
What it does
Foodifai allows users to submit a photo either from their library or by taking a new photo. The photo is then analyzed and local restaurant recommendations are presented based on what is in the photo. The user can then request an Uber from within the app to get to where they want to go. Users never have to enter in a single line of text.
How we built it
We built this project in 2 parts: iOS and web. Both the iOS and web applications utilize the Clarifai and Foursquare API's. The initial photo is sent to the Clarifai food endpoint and the top tags returned from the endpoint are fed into Foursquare. The top results are displayed to the user with some information about the restaurants.
In addition, the iOS app also utilizes the Button API to allow users to request an Uber from within the app. It automatically provides an ETA and fare estimate from the user's current location.
The web version was built using a mix of HTML, CSS, and Python while the iOS app was built using Objective-C.
Challenges we ran into
Throughout the development process, we ran into multiple roadblocks when using the various different API's. Since everyone on our team had very limited experience with JSON prior to the project, we struggled to properly parse the endpoint response files to get the data we needed. This challenge required hours of searching the web, playing around with code, and asking others for help until we finally retrieved what we needed.
One of the later challenges we faced was with the overall User Experience. Throughout the development process, we were so focused on the functionality that we almost completely neglected the overall UX. With some time left towards the end of the hackathon, we decided to go full throttle with the UX and put our best into it. Even though none of us had extensive design experience prior to today, we ended up not only created a great UX, but also a distinctive one that gave our applications an identity.
A big challenge for me specifically was spending so much time on a single project. Being that this was my first hackathon, it was tough to sit down for hours at a time and focus on the same project, trying to get every last bug out of my code. But, it was a fantastic experience and the adventure was thrilling to see a fully functional app materialize in such a short amount of time.
Accomplishments that we're proud of
Even after all of our hardship with the development process - specifically with using endpoints and JSON - we managed to overcome virtually every obstacle we faced. We managed to integrate a total of 3 separate API's across 2 platforms in less than 24 hours, a feat that we originally considered to be a stretch goal Not only that, but we had ample time to focus on the UI and UX, allowing us to not only make our applications functional, but also easy to use. Our collective effort accomplished far more than we ever thought just 24 hours ago.
What we learned
Our team was very split in terms of background: 2 of us were familiar with web development while 1 was familiar with iOS and API usage. Through our collective efforts, everyone learned a bit about each other's specialties. We all also flexed our creative muscles and learned more about our specialties. After this 24 hour coding spree, all 3 of us can say that we each know web, iOS, API usage, and JSON far more than before. In fact, all of us can even say that we are now comfortable with using API's.
What's next for Foodifai
The iOS version is nearly ready for an app store release. There are some minor UI issues that need to be polished prior to release, but it is functionally complete as of now.
The web version is almost functionally complete, but there are a few more features that need to be implemented, such as the ability to view a greater amount of restaurants and the ability to upload a photo. The overall design also needs to have a few tweaks just to make it easier to use.
In the future, we expect to increase the overall functionality for both apps. In addition to the information they already display, we would like to display things such as ratings, tips, and possibly OpenTable reservations. There truly aren't any boundaries to what we can do and we hope to create a revolution in the restaurant search industry.