Every college student has to take Gen-Ed classes to fulfill graduation requirements. Often, this process is complicated because there are way too many options and very little information on what Gen-Eds are useful and fun. Navigating Reddit and other sites is a waste of time, and there isn’t a single platform for discovering your next favorite class.

What it does

ByMyGenEd is a website that matches you with classes based on your preferences. We take your graduation requirements, current major, and desired GPA, and present you with a list of classes. This list, which is presented as a set of interactive, swipeable cards (think of Quizlet or Tinder), includes a lot of information that can help you decide what to do, like past student GPAs, credit hours satisfied, and student reviews. This is what every student needs for finding the perfect GenEd and having the happiest semester of their lives!

How we built it


  • Created a single page application using React.js and JavaScript.
  • Used Material-UI for the design.
  • Utilized data visualizations with Plotly.js.
  • Sent student preferences to the Backend.
  • Presented matched courses in an interactive card format created with custom CSS.


  • Downloaded UIUC's public class GPA dataset.
  • Manipulated dataset and uploaded to our Google Cloud Firestore database.
  • Made our back-end with Node.js, where it analyzes the user’s input (GPA and course interests) to match * the courses from the database with the user’s tastes.
  • Set up our Node.js app in Google Cloud App Engine, so that our back-end code runs on the server and the front-end code will access the server.

Challenges we ran into

  • Setting up the Google Cloud server.
  • Fetching data from the firestore database via Node.js (especially dealing with asynchronous functions).
  • Visualizing course data using React.js libraries.

Accomplishments that we're proud of

  • First time using Google Cloud service.
  • First time using Node.js and Express.
  • Hacking virtually from multiple locations on campus.

What we learned

  • How to use Google Cloud services (such as how to instantiate a cloud firestore database).
  • How to set up a Google App Engine server.
  • Learning more about Data Visualizations with JavaScript and React.js.
  • Learning more aspects of Node.js and the express library.

What's next for BeMyGenEd

  • Include other possible ways to earn course credit (AP/IB Credit, Dual Credit, Proficiency Exams)
  • Expand towards other universities.
  • Connect to curriculum graduation requirements.
  • Add a recommender system on what to take based on your schedule and past courses.
Share this project: