For many hackathons, we have had trouble finding new teammates to fit our interests and abilities to work with. The DevPost system of finding a hacker that was looking for a team, and then emailing, and usually waiting weeks for responses, only to hear that the hacker was with another team. Because of the tedious process of making teams, we wanted to create a platform that connects hackers quickly through an easy to use mobile app that acts similar to Tinder. You swipe on hackers' profiles depending if you like their skillset, and you are matched with a team to fit your needs.
What it does
Our app serves to connect Hackers and form teams for Hackathons by connecting users with similar interests and abilities. To register, the user gives some identification and also fills out a short survey. Then, the results of the survey are passed into an algorithm where the backend matches users with similar interests and technological abilities, making the best matches possible. The best matches show up on the users swiping page, where the user can swipe right to indicate a pass, or swipe left to indicate a match. For a match, the user's information and the match user's information are sent to the backend, where they are combined to form a team. Then, a team forms on the team page and users can connect with each other through their discords. Basically, its like Tinder but for matching hackers into teams of a certain size.
How we built it
The frontend was built with Flutter. We chose Flutter because it is easy to work with, gives excellent widgets essential for the app's swiping functionality, and easy to integrate with the backend. We used two backends to hold user data: Firebase and MongoDB. The user's information was stored in both, however Firebase was used to call the user information directly from the app, and that information was passed into http post requests to the backend, where the actual matching happened. The main backend was a database hosted on mongodb atlas and the matching algorithm and access methods were implemented on GCP using google's serverless functions. The algorithm works basically like Tinder, except instead of making pairs it forms teams of multiple people. The lists of users shown are first filtered by some of the user entered factors, for example some hackers may not want to be in a mixed gender team, and some hackers may not be comfortable in a team with all newcomers or all experienced hackers. We then sort based on some key indicators such as
- what the main aims of the hacker are at the hackathon
- how comfortable they are with new technology
- how focused they are on the area they chose
- how open they were to choosing a different idea if they already had one etc. When matches are mutual, they get grouped into teams which then can be seen by users.
Challenges we ran into
Making an abundance of users was tedious because we had to fill out information and take the survey for 15+ users, since we wanted a diverse array of users to be matched according to their interests. We also had a bit of trouble communicating between our front end and backends, since for firebase and mongoDB, we used slightly different formats to store the user data.
Accomplishments that we're proud of
We were able to complete our product. We also were proud to seamlessly integrate the two backends together and connect them to the frontend.
What we learned
We learned that using two backends instead of one when communicating with Flutter is much easier than the one mongoDB database. We learned how easy it was to use firebase with Flutter, and we will be using it much more often in the future.
What's next for HackerMatch
We want to extend our service for multiple hackathons, and not just for the single hackathon that is currently available for our app. We want to make some kind of menu where you can sign into your DevPost account, and from your hackathons, choose teams using our app.