Hello! Welcome to the UBC Explorer project - the full stack application and repo hosting both the frontend and backend of the UBC Course Search tool and the BCS Explorer / Degree planner.
Try it out at
UBC Explorer is a product offering two solutions for students aimed at course search and degree planning: UBC Course Explorer and BCS Explorer. UBC Explorer was created in 2020 by a group of second degree students (BCS) at the University of British Columbia. It was due to the lack of planning tools offered to us as students. Students would plan their degree through a pdf which seemed silly and required a modern solution.
Our mission was to provide students a seamless course search experience with a modern look. Additionally, we wanted to provide a dashboard for students to manage course worklists / course plans with emphasis on BCS program requirements.
You can read our journey at To Boldly Build: Insights for New Developers to Kickstart their Projects about how we got started. After 3 years of serving the entire UBC student community with our course search tool, our team is graduating and decided to open source this project to enable future students to contribute.
- UBC Course Explorer is a a modern course search tool that enables all students to browse UBC course prerequisites and dependencies.
- BCS Explorer and Dashboard is a modern dashboard with increased functionality related to course search features such as a worklist builder, degree progress tracker, and overview for users to quickly see their stats.
- UBC Explorer API is an API enabled devs to access our MongoDB database containing our course data. We are proud to support numerous UBC developers in their projects.
This work is to enable students to be incredibly efficient when course planning and to replace the pdf planner offered to UBC BCS students. The BCS Dashboard has been officially endorsed by the UBC BCS director and is home to over 1k users.
Our stack consists of React, JavaScript, MaterialUI, MongoDB, Express.js.
To set up your local environment, be sure to have the following installed:
- Node.js
- Git
git clone https://github.com/HelloWorldFam/BCS-Course-Selector.git
The directory of importance is the bcs-dashboard
. Change directory into this directory and run the installation script. The bcs-landing-page
is a separate directory for the landing page and is no longer in use. The landing page used is moved to bcs-dashboard/src/pages/landingpage
cd bcs-dashboard
npm run install
# Open another terminal window
cd bcs-dashboard/backend
npm install
To be able to read/write to the mongoDB database, you will need to add credentials.
- Request access to the test database
- Add credentials to your .env file locally.
cd bcs-dashboard/backend
# create a file called: .env
# inside this file, paste your credentials.
# it will look like the following but with the <username> and <password> replaced with your credentials
ATLAS_URI=mongodb+srv://<username>:<password>@cluster0.f6swi.gcp.mongodb.net/?retryWrites=true&w=majority
To run the code locally, you will need to run both the frontend and the backend and have an .env
file containing mongoDB read access.
cd bcs-dashboard
npm start
# in new terminal window
cd bcs-dashboard/backend
nodemon server
You should be able to view the UBC Explorer- Course Search on your localhost.
http://localhost:3000
# to view the BCS Explorer, navigate to this url
http://localhost:3000/bcs/start
To deploy to GCP, install the gcloud CLI. To authenticate, run gcloud init
.
Once installed, fill in the ATLAS_URI
in app.yaml
and run:
gcloud app deploy
We will have some documentation coming soon.
The main purpose of this repository is to continue evolving UBC Explorer. We want to make contributing to this project as easy and transparent as possible, and we are grateful to the community for contributing bugfixes and improvements.
Read our Contributing Guide to learn about our development process, how to propose bugfixes and improvements.
Check out the issues labeled with good-first-issue
for bugs/fixes/additions that have limited scope.
We have adopted a Code of Conduct.
A huge thanks to all the contributors working to maintain the project.