Creates interactive graphs for UBC subjects and courses 📖
UBSee is a full stack single page application made using the MERN stack. The client is made using React and the server is an express REST API that provides graph data stored in a MongoDB Atlas cluster.
Live at : ubsee.dev | deployed using heroku
Make sure to share the website with other students if it helped you out. ⌚ or ⭐ the project to keep up with latest changes.
- install Node
>=16.13.1
. - run
npm install
to install server dependancies cd client
and runnpm install
to install client dependancies
npm start
- runs the REST API at localhost:8080.npm run dev
- concurrently runs client and server. Use this for local development.npm run nodemon
- runs the REST API at localhost:8080 using nodemon.npm run client
- runs client from the root directory.
Check package.json to see all scripts
Create an issue or submit a pull request. Any improvement/feedback about the project is valuable.
Added a new subject is not too challenging (it's just monotonous) since we have written multiple simple scripts to aid in doing so at ./scripts/
There are a few steps in adding a new subject:
- run
npm run add [SUBJECT ID]
to add a base json file with an empty prereqs fields - add the prerequisite expressions for each course in the json manually
- rename the file to [SUBJECT ID].json
- run
npm run test [SUBJECT ID]
to test your json. Read comments in the script file to understand what the tests do - run
npm run fix [SUBJECT ID] [COURSE #]
for each course to add missing courses in the JSON- if the course is still not found, then remove the course from the prereq expression (since the data is unavailable)
- add [SUBJECT ID].json to course.json
- run the server and click all nodes to make sure that an error is not thrown
- make a pull request making sure you describe any important details
Make sure you read and understand what the scripts do. Unfortunately, because UBC doesn't officially provide the data, courses and subject need to be manually added for now.
Make sure to submit a pull request if you think you can improve the process of adding new subjects.
Use npm run json-mongo
to add data from ./data/json/courses.json
to MongoDB. Add your MONGI_URI
in a .env file.
Uncomment the lines at the bottom of ./scripts/json-mongo.js
before running the command and take a look at the file for more information.
- NodeJs
- Express (web server for REST API)
- ReactJs (used to create static client)
- MongoDB (datababse)
- GoJS (Graphing library)
This project is licensed under the MIT License - see the LICENSE file for details
- UBSee icon made by Freepik from www.flaticon.com
- Use of GoJS made under their Academic Use policy
- Course data provided by ubcexplorer and ubccourses