Our group is creating a web application that will allow University of Waterloo students to manage their undergraduate career. The application will allow users to track things such as the courses they have taken each term, as well as their final grades, their current course schedules, and their friends in the university. They will be able to visualize all the courses they've taken, their estimated GPA, and the courses that they share with their friends.
What sets us apart from other University applications like RateMyProf and UWFlow is that rather than focusing on individual courses, we consider the student's entire university career. We do this by calculating GPA's, persisting data from previous terms, and including this data in future analysis. We also help them plan courses based on pre-requisites and the courses their friends are taking. We will be a tool that the students use during their entire degree.
- Keshav Gupta
- Isshana Mohanakumar
- Edward Pei
- Ricky Lu
- Govind Nair
DegreeMap uses a MySQL database.
- Install MySQL server + workbench
- Complete configuration steps
- Enter the database shell
mysql –u username -p password
- Create the database
CREATE DATABASE degreemap;
- Use the database
USE degreemap;
Before you can use either Sample or Production data, you must have already followed the database setup steps above at the root of this repository.
You also need a .env
file in DegreeMap/Database/.env
. This .env
file requires the following data to be entered correctly:
TOKEN="YOUR API TOKEN FOR THE PROD DATA"
APPUSERNAME="YOUR MYSQL USERNAME"
PASSWORD="YOUR MYSQL PASSWORD"
DATABASE_NAME="degreemap"
HOST="localhost"
PORT=3306
APIPORT=3030
SERVERURL="http://localhost:3030"
USEREMAIL="email@email.com"
USEREMAILPASS="emailpassword"
You can get your API Token for the prod data by clicking here. Simply follow the registration steps and the Token will be emailed to you.
It is very straightforward to populate the sample data.
- Navigate to the 'Database' directory.
cd DegreeMap/Database
- Install the NPM packages. Install Node and Npm if you haven't already before you do this step.
npm install
- Run the data population script for the sample data.
node PopulateData.js sample
The script will automatically drop the entire existing database tables, recreate the tables, and take the data from the CSV files in DegreeMap/Database/DataFiles/Sample/
, instead of the production API endpoints if you use the sample argument.
It is very straightforward to populate the Production data.
- Navigate to the 'Database' directory.
cd DegreeMap/Database
- Install the NPM packages. Install Node and Npm if you haven't already before you do this step.
npm install
- Ensure the
.env
file is correctly filled out using the template described earlier in this section and added at pathDegreeMap/Database/.env
. The script won't work without the.env
file and token. - Run the data population script for the production data.
node PopulateData.js prod
The script will drop the entire existing database tables, recreate the tables, query the prod api, and re-populate the data. You must use the prod argument to populate against the production dataset.
To start the application, you must first follow all steps to setup and populate the database (described in above sections). Then, start the client and server.
See client/README.md
for step by step directions on how to start the React front-end.
See server/README.md
for step by step directions on how to start the Express.js/Node.js back-end.
See earlier sections for this setup.
The application currently supports the following features:
- Configuring the database tables in
DegreeMap/Database/Queries
- Populating the database with the sample data using the script in
DegreeMap/Database/PopulateData.js
- Populating the database with the production data using the script in
DegreeMap/Database/PopulateData.js
- Interface with the Waterloo API using the TOKEN in the
.env
file
- Interface with the Waterloo API using the TOKEN in the
- SQL Query testing for the sample data in
DegreeMap/Database/Queries/TestSample
. - SQL Query testing for the production data in
DegreeMap/Database/Queries/TestProduction
. - Currently supports the SQL queries related to R6 to R11, and R12, R14, R16 for the sample data.
- Both
.sql
and.out
files for all the features. - Fancy features R13 and R15 are not related to SQL so they don't have this section.
- Both
- Currently supports the SQL queries related to R6 to R11, and R12, R14, R16 for the production data.
- Both
.sql
and.out
files for all the features. - Fancy features R13 and R15 are not related to SQL so they don't have this section.
- Both
- Feature interface descriptions for all R6 - R16 in the report
- SQL Scripts in
DegreeMap/Database/Queries
- Creating database
- Creating tables
- Creating triggers
- Creating procedures
- Dropping tables
- Queries for R6 - R11, R12, R14, R16
Feature | Frontend | Backend |
---|---|---|
R6 - User Management | Auth, User Management | Routes |
R7 - Course Operations | Create, Search/Delete/List | Routes |
R8 - User Schedule | Schedule | Routes |
R9 - Friend Management | Friend | Routes |
R10 - Taken Courses Management | Manage Taken Courses | Routes |
R11 - Show Courses User Can Take | Plan | Routes |
R12 - Pre-requisite graphs | Graphs | Routes |
R13 - AI Course Suggestion Model | Course Suggestion UI | Routes, AI Model Scripts |
R14 - Graded Content | Graded Content | Routes |
R15 - SQL Injection / Hashing | Hashing | SQL Injection. NOTE: All routes were modified. |
R16 - Course Deadlines | Deadline Management | Routes, Sending Email |
See MilestoneReports/MX
to view the report PDFs and assets.