Inspiration

With the winter semester starting, we've noticed many students eager to network and build study groups among their peers. We decided to build BuddyUp to help facilitate this process, making easier for students find and coordinate with their peers.

What it does

BuddyUp lets students upload their schedules downloaded from BearTracks and gives you a list of students who are in the same class sections as you, ordered by students who share the most classes with your schedule.

How we built it

We built it using the MERN stack (Mongo + ExpressJS + React + NodeJS) using Docker Compose to containerize the frontend, backend, and database separately. We also used the @react-oauth/google and google-auth-library libraries to help with Google authentication. Lastly, we used ical.js to help us convert the text data of the .ics calendar file downloaded from BearTracks to a more convenient JSON representation.

Challenges we ran into

It was our first time using ExpressJS + MongoDB for the backend, so a significant amount of time was spent learning these technologies. Though we did get it to work in the end, we feel that better practices and optimizations could've been adopted if we had more time.

Moreover, for convenience, we decided that we would use Google OAuth to let students simply sign in with their Google account to save them the hassle of the usual registration page. However, implementing Google OAuth was the most difficult part of the project as we had little experience implementing authentication and JWT tokens (especially while learning a new backend stack).

Accomplishments that we're proud of

We are mainly proud of the pace we were able to learn and adapt to the MERN stack. As both of us are primarily frontend developers, we were not only surprised at how quick and easy it was to learn the basics of Express to get a basic API running (though with a few hurdles, such as getting Google OAuth to work). We also feel accomplished at how our docker-compose approach 'just works' and how our website can be run locally with minimal setup needed.

What we learned

Learning how to use ExpressJS and Node to run a backend API server was the biggest concept that we had to learn as we already had prior experience with React and MongoDB. It taught us a lot about API design, routing, and the setup required to let our React frontend communicate with the Express backend.

We also learned a lot about how modern OAuth authentication and how JWT tokens work as we tried to implement 'Login with Google' to our website.

What's next for BuddyUp (404_Bugs_Not_Found)

In the future, we would like to implement a more sophisticated matching algorithm that not only looks at your exact schedule and faculty, but that also matches based on more factors like your interests, extracurriculars, etc. We would also like to implement a chat system to the website so that users don't have to communicate through the provided emails. A built-in chat system would also allow users to form study groups within the website, keeping coordination in one centralized location.

Lastly, we would also like to eventually deploy this website publicly on a domain once we figure out how to deploy the stack on something other than Heroku (RIP Free Tier).

Share this project:

Updates