From the beginning, our hackathon group was a diverse group of people who had never met before and had completely different skillsets, from Java to Webdev to iOS. We came to the hack as individuals, and we ended up leaving as a team. Our inspiration for HackTeams was to build a social hackathon app that let users meet with other hackers that had complimentary skillsets that would level the playing ground between established, developed groups and those without. Our ultimate goal was to improve the hackathon experience for individual hackers.
What it does
TeamHacks allows registered TeamHacks hackers to declare interest in hackathons, and then, in server-side time intervals, teams can be generated using an algorithm based off of a machine learning model that optimizes success for different combinations of user skillsets, taking the best combination out of all the users not already in teams. Teams would then be able to chat with each other in preparation for an event. Additionally, users can follow friends, which would then notify the user when that friend was going to a hackathon.
How we built it
TeamHacks was built with a variety of libraries -- most notably, TeamHacks relies on Amazon Web Services. The app's data is stored in an AWS RDS MySQL database, which is written into and read out of with Node.js and JSON. The database is normalized to third normal form, with tables created to solve N:N relationships. Amazon IAM settings grant permissions to users, helping to secure the dates. An AWS Machine Learning model utilizes real-time endpoints to send data to the team generation algorithm, and was itself based off of a .csv model stored in the Amazon S3 storage, generated with C++.
Github served as version control and was used to have different people working on the same code. The front-end of the website is powered by Angular, and the back-end of the website is powered by Express, Node, and jQuery. Cheerio was used to scrape hackathon data off of the MLH website and add to the Amazon RDS.
Challenges we ran into
Initially, the first challenge we ran into as a team was what type of project to embark on, given our different skillsets, which was a large hurdle at first, and eventually, after much deliberation, we decided to create TeamHacks, which would solve this problem for future hackers so that they would be able to hit the ground running as soon as they came.
Accomplishments that we're proud of
What we learned
The biggest things we learned from Def Hacks() NY were how to use AWS and how to integrate the various libraries. Figuring out how to get the asynchronous Node.js was also very important to us and we learned a lot along the way. Organization of the database and optimization of the machine learning model were particularly useful skills that we will find valuable in the future, and we will use both in future hackathons and our day-to-day projects. Importantly, we learned how to cooperate as a team with people who we had never met before and manage to pull out a complete project in 24 hours.
What's next for TeamHacks
We plan to increase TeamHacks' social media functions soon, which were downplayed in the face of the functionality of the database and the machine learning algorithm. Of course, as with all machine learning algorithms, we want to improve accuracy and optimization, and we want to increase and diversify our use of scraping with Cheerio in order to increase the resources we have available on our website. With some additional refinements, we see TeamHacks as being a solid application that many hackers will find useful.