Have you ever wanted to form a group at a hackathon, but been daunted by not knowing anyone there? GROUPr is a web-based app made for finding teams and groups for events, like Hackathons!
Groupr was built to use the same “swipe-left, swipe-right” style that has become prevalent in modern dating apps. Users can use this interface to decide which other users they’d like to work with in groups with. When it is time for groups to form, our algorithms forms optimal groups of people that have all indicated that they want to work together individually. Then, users are presented with a chat for that newly formed group, and the option to leave and find a new group.
Groupr allows for the creation of “Events”, such as a Hackathon, or a certain Class, and allows users to enroll in multiple events at once. Events can be either “managed” or “unmanaged”
Unmanaged Events are events such as a hackathon, where users can drop in and groups form asynchronously when users have made enough connections with other users.
Managed events are events such as a class, where the instructor will hit a “create groups” button and everyone will be put into a group at once.
Backend algorithms have been implemented for both models, but currently only Unmanaged events are fully implemented.
Groupr was written in Python with Django for the back-end and Vue.JS and Bootstrap for the front-end. The algorithm used to find groups is a graph algorithm based off of the k cliques problem. Groups have built in text chat (built but not implemented yet) to communicate with each other.
The the unmanaged algorithm has 2 phases, one which finds perfect groups where each user wants to work with the users, another phase where user choices are optimized overall. The managed one only uses the 2nd phase. The algorithm uses a graph to track user choices.
A perfect group is one where all users want to work with each other. When a user chooses another user, the only new perfect group that could exist would be between both users. The program searches all 2 way links which include both users to see if a perfect group of the chosen size exist. This reduces the number of possible searches considerably. Future implementations could have smaller perfect groups pre-calculated to reduce runtime.
After a user is done swiping through the people at their event, a second algorithm is run to find the k cliques with the highest score. After each best k-clique is found, the graph is updated removing those users, and repeating until no users are left. The last group may be of smaller size. Future implementations could have options, if the last group is smaller than the standard group size, to leave the group as is, or distribute them among other groups based on their preference.
Accomplishments that we're proud of
We're very proud of our robust backend. It has a powerful API and can be adapter to work with a mobile app or other interfaces easily.
What we learned
We all learned a lot about Full Stack development.
What's next for Groupr
A mobile app!