Study Buddy

The ongoing COVID-19 pandemic has made the challenge of meeting people in your classes more difficult; it has become harder to meet and approach people in both online and in-person classes. We wanted to create a platform to connect people based on their classes, majors and school.

What it does

Study Buddy is an innovative web-based networking service that will assist users in finding study groups. After creating an account and completing a profile, users will have access to the Explore Profiles page to view a list of potential Study Buddies in their classes, major or school; users will have the ability to message any of these potential Study Buddies. The website also features an option for users who may be hesitant about starting the conversation with someone new can use our Match Me function to be matched up with a new Study Buddy that our algorithm thinks would be the best fit for them.

Matching Algorithm Explanation

The algorithm designed for our Match Me function starts by filtering out potential study buddies based on the user's selected preferences(school, major, similar classes). The algorithm then calculates the score of each potential Study Buddy relative to the user. The score is the the maximum value between 0 and the weighted sum of the similarity of interests and the weighted sum of the number of same classes + 1.

The weights are shifted accordingly according to the user's specified preferences. The weight for the sum of the number of same classes may be negative in the cases where the matches do not have the same classes if we have a large number of potential matches.

Each potential match's score is directly proportional to the chances of being matched to the user.

How we built it

Study Buddy was built using react for front end development. Mongodb was used for the database and auth0 was used for our login process. We used GitHub to collaborate. We split the team up so that some people can work on designing the frontend while the rest worked on developing the backend. First, we designed the landing page and profile cards for users; during which, we also created the database and populated it with test data. Next, we created the login page and used auth0 for registration/login. Then we developed the carousel to display and filter matches based on the current user's data (school, classes, major).

Challenges we ran into

Some challenges that we encountered while working on our Web Application are:

  • The steep learning curve of React.JS and Express.JS, we had no knowledge of how React and Express works prior to starting the hackathon. It took trials and errors, and lots of tutorials to make a functional application with both backend and frontend.
  • We were unable to model the relationship between the user created by Auth0 with the profile that we generated for the matching algorithm.
  • Security of our backend, since this was our first experience with Express.JS and MongoDB, our backend isn't as secure as we'd hope it'd be, due to difficulty in implementing Auth0 API connection, we weren't able to lock the backend down until user authenticates and sends over a silent authentication token.
  • The matching algorithm was definitely the hardest the implement, we couldn't quite put the algorithm ideas that we had in mind in the form of code, and it was too complicated so we went with the easier route.
  • We couldn't customize the flow of our Auth0, we wanted to redirect user to a custom page post-registration for building their personal profile, but we couldn't figure out how to do it on Auth0 dashboard, as well as, in our frontend code. Finding data that matched with what we had in mind was demonstrably difficult, so we had to write a script to randomize all the actor for data.

Accomplishments that we're proud of

  • We were able to make profile cards on a carousel to display "matches" for study buddies. Despite having a group of first-time hackers and lack of experience in web-development we were able to create a website that exceeded our initial expectations at the start of the competition. All of us were able to learn valuable things about both frontend and backend development. Finally, we're also proud of the algorithm we developed to match users; we believe that it could serve as a good baseline that we can improve upon in the future.

What we learned

  • The use of react and MongoDB for front end and back end development.
  • JavaScript
  • How to write a for loop in Python
  • Collaborating with a team in-person and on GitHub

What's next for Study Buddy

The scope of this project was larger than we initially anticipated, and we were not able to fully implements the chat and match making algorithm due to certain issues we faced. We hope to further develop and finish these features in the coming few weeks. Also based on feedback from peers and judges and the amount of interests for this project, we might develop a small scale version of a Study Buddy bot for discord

Share this project:

Updates