PeterPortal is a web application aimed to aid UCI students with course discovery and planning. We consolidate public data available on multiple UCI sources on the application to improve the user experience when planning their course schedule.
Features include:
- Course catalog with:
- Grade distribution graphs/charts
- Visual prerequisite trees
- Schedule of classes
- Reviews
- Professor catalog with:
- Schedule of classes
- Grade distribution graphs/charts
- Reviews
- Peter's Roadmap, a drag-and-drop 4-year course planner
- Anteater API
- Express
- React
- tRPC
- SST
- PostgreSQL
- Drizzle ORM
- TypeScript
- Vite
-
Check your Node version with
node -v
. Make sure you have version 18, 20, or 22 LTS. If you don't, we recommend nvm to manage node versions (or nvm-windows). -
We use pnpm as our package manager. If you don't have pnpm, install it with
npm i -g pnpm
-
Clone the repository to your local machine:
git clone https://github.com/icssc/peterportal-client
-
cd
into the cloned repo. -
Run
pnpm install
to install all node dependencies for the site and API. This may take a few minutes. -
Setup the appropriate environment variables provided by the project lead.
-
Switch to a branch you will be working on for your current task (pick a name that's relevant to the issue).
git checkout -b [branch name]
-
Fork the project by clicking the fork button in the top right, above the about section.
-
Clone your forked repository to your local machine
git clone https://github.com/<your username>/peterportal-client
-
cd
into the cloned repo. -
Run
pnpm install
to install all node dependencies for the site and API. This may take a few minutes. -
Make a copy of the
.env.example
file in the api directory and name it.env
. This includes the minimum environment variables needed for running the backend. -
(Optional) Set up your own PostgreSQL database and Google OAuth to be able to test features that require signing in such as leaving reviews or saving roadmaps to your account. Add additional variables/secrets to the .env file from the previous step.
-
Choose an issue you would like to work on under the issues tab. Leave a comment letting us know you'll work on this issue.
-
We recommend you switch to a branch you will be working on for each feature.
git checkout -b [branch name]
- Once your feature is ready, open a pull request and a member from our team will review it. Follow the pull request template.
-
Open a terminal in the root directory of the repo.
-
Run
pnpm run dev
to start both the backend Express server and frontend Vite dev server -
Visit the link printed to the console by Vite!
Optionally, you can run the site/api separately by changing into their respective directories in two different terminal windows and running pnpm run dev
🎇 Our mission is to improve the UCI student experience with course planning
We consolidate our data directly from official UCI sources such as: UCI Catalogue, UCI Public Records Office, and UCI WebReg (courtesy of Anteater API).
🐞 If you encountered any issues or bug, please open an issue @ https://github.com/icssc/peterportal-client/issues/new
✅ Although we consolidate our data directly from official UCI sources, this application is by all means, not an official UCI tool. We stride to keep our data as accurate as possible with the limited support we have from UCI. Please take that into consideration while using this Website.
📜 There are no hard policies at the moment for utilizing this tool. However, please refrain from abusing the Website by methods such as: sending excessive amount of requests in a small period of time or purposely looking to exploit the system.