enter your name
create or join a room
search for and add suggested restaurants
vote on your preferences
ranking algorithm determines the most suitable restaurant
Too many times in our (young adult) lives we face the daunting challenge of promptly deciding on where to eat when going out with a group of people. Either deciding on a night out with friends who you've known for years or an introduction dinner with other students at a new internships, we've all faced the "I'm fine with anything" and "I'm not feeling sushi" messages that inevitably get thrown around almost endlessly within a large group chat. Rather than argue back and forth endlessly with each other and god forbid, repeating yourself for the tenth time to the individual who arrived late with a quick "wait guys what's going on", Choosr is made in mind of quickly providing an environment where groups of people can quickly and concisely decide on a simple dinner plan.
What it does
Choosr provides a platform where a group of individuals can easily create a voting environment to quickly and fairly decide on a restaurant choice for an event. The Choosr process for the user can be broken down into two phases: the input and ranking phase. In the input phase with the help of the Yelp API, users are able to search for the names of restaurants and a list of matching restaurant names as well as their location will be added to a pool that will be used in the voting phase. Once all restaurant suggestions are locked in, the voting process phase begins. In this phase, the users are able to rank the choices in a simple preference system: 'Down', 'Meh' and 'Naw'. Once the voting process finishes, a Schulze ranking algorithm will decide on the top result and display this to the group.
How we built it
Choosr is built with Python/Flask and SQLLite3 on the back end, with React running on the front end. Git was also used as a version control system durring its development.
Challenges we ran into
While the majority of our team has working Python knowledge, none of us were especially familiar setting up our own database. Therefore we've spent the longest time developing the schemas used for the database and testing the functionality of creating users and rooms.
In addition, another challenge we've come across is trying to have the application ran on a standalone URL. We've looked into many website hosting services such as Azure, AWS, and Heroku, but again the lack of experience really hurt us here. After trying to get it up with running with these services and failing, we decided to rather use the man power to finish up the app than try to get it hosted.
Accomplishments that we're proud of
The biggest accomplishment that we are proud of is actually getting the application to run. Actually seeing a product that we visualized come to life sparks a feeling that we cannot even describe.
Another big accomplishment for us is finally figuring out the schemas used in the backend. As discussed before, our team was not familiar with databases so getting the final product where it is was quite the large accomplishment for our team.
What we learned
Since this Hack the North is the first Hackathon for the majority of our members, we have learned many things in terms of planning, designing, and developing our very own webapp. We've learned the hard way of dealing with issues such as differences across operating systems, wonky dependancies, and merge conflicts - just to name a few. However despite this, team moral was high and we've learned that perseverance is one of the most important factors when it comes to building an app.
On a more serious note, we have also learned that trying to deploy our webapp on AWS through multiple pages of tutorials while running on minimal sleep is a very difficult thing to do.
What's next for Choosr
The first step for Choosr after this Hackathon is for it to be hosted on an external server. Our vision of a centralized place of easy group decisions obviously need to be expanded outside of the app simply running on a local machine. In addition, mobile apps for both Android and iOS can be created in order to provide the younger generation with a quicker way to access our app - thus a quicker way to decide on a place to eat.
In terms of features, Choosr can definitely be expanded to not cover only restaurants, but provide a quick choice selection for a myriad of other group activities, such as movie or board game recommendations. In these scenarios, we will have to branch out from the Yelp API in order to find more specialized recommendations for these specific activities.