Current food apps like Yelp and Google Places list nearby restaurants, but they do not take into consideration the user's preferences and behavior when selecting places to eat. With Dinder, we hope to implement machine learning algorithms in order to take into account the current user's previous selections, other users' selections, restaurant ratings, and more. With this, the user is able to quickly narrow down their search on what they want to eat without having to scroll through the hundreds of nearby restaurants that they may not be in the mood for.

What it does

The user is sent to the main screen where they are given restaurants in the form of cards. Each card has the name of the restaurant, pictures, distance, price range, user ratings, and reviews. They can swipe right if the restaurant is appealing to them or swipe left if not. They will be continually fed restaurants to choose from, and they may make choices for as long as they wish. At any point in the process, they can click on the 'Favorites' tab, and all of their choices will be displayed with their corresponding restaurant values. They can make changes to their preferences in the 'Settings' tab to filter future results to their liking.

How we built it

We were all interested in building a mobile app, so we decided to use React-Native. We all downloaded the base starter pack for React-Native and began making changes. We used a library to help with the swiping animations used in restaurant selection. In order to get the restaurant information we used Zomato's API to retrieve information such as name, location, user rating, and price ranges and Google Places' API to get restaurant hours of operation, reviews, and images.

Challenges we ran into

We initially tried to use a library to make the requests to Zomato's API easier, but, after several hours we were unable to resolve compatibility issues. We decided to scrap that idea and make the API requests manually with React Native's fetch() functionality instead. Additionally, we ran into synchronization issues dealing with multiple nested API calls that lead to many unpredictable functionality, but we were able to eventually able to figure it out using promises and asynchronous functions. Lastly, the whole project was a challenge due all of our unfamiliarity with React Native, Zomato's API, and Javascript Promises and asynchronous storage.

Accomplishments that we're proud of

We were able to acclimate to a brand new environment that none of us were experienced in and able to produce something more than acceptable in a reasonable amount of time. We were able to effectively communicate and delegate tasks from beginning to end. Team members were able to encourage each other to perform throughout the duration of the event, even when morale was low.

What we learned

We became much more familiar with React Native, and we hope to use it again in the future. For our next hackathons, we believe we planned effectively; however, when it came to the actual implementation and development tools, we were under-prepared. We should take the time to learn more about the tools beforehand, that way we can focus more of our attention on adding new features to make the most efficient use of our time.

What's next for Dinder

We hope to use Machine Learning algorithms to make the restaurant suggestion functionality more robust and customizable. We also hope to deploy this as an actual app on several app distribution platforms to reach a wide audience and test our application with multiple simultaneous users. Finally, to make sure our application is running properly, we hope to set up testing of different types to make sure things are running as expected while maintaining security of user information.

Share this project: