Warning
This repository has been archived. The PennPlanner no longer receives any updates starting May 1, 2024, as the University of Pennsylvnia plans to roll out DegreeWorks, a degree-planning tool, in the Fall of 2024. PennPlanner will remain accessible here, and anyone is welcome to fork and use this codebase for their needs.
A drag-and-drop course planner for students in the online Master of Computer and Information Technology (MCIT) and Master of Science in Engineering in Data Science (MSE-DS) at the University of Pennsylvania.
Website
·
Report Issues
·
Ask Questions
·
Suggest Features
- Drag and drop courses to plan your entire degree journey
- View full details of each course, including ratings from MCIT Central
- View, filter, sort, and search the entire Penn Engineering Online course catalog
- Receive warnings for missing prerequisites or other requirements in your planner
- Typescript
- React
- Tailwind CSS
- Next.js
- Vercel Deployment
- Supabase Auth with Google OAuth
- Supabase's PostgreSQL database
- Highlight.io for observability
- Node.js
- NPM
- Supabase account
- Clone the repo
git clone- Install NPM packages
npm install- Create a
.env.localfile in the root directory and add the following environment variables:
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=Note that for UI-only development, you might be able to opt out of using a database completely by commenting out all Supabase-related code.
-
Remove observability code
a. Delete
instrumentation.tsb. Remove
HighlightInitfrom_app.tsxc. Replace
next.config.jswith the default config:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
}
module.exports = nextConfig- Run the development server
npm run devusers table:
| Name | Data Type | Format |
|---|---|---|
| id | uuid | uuid |
| created_at | timestamp with time zone | timestamptz |
| username | text | text |
| full_name | text | text |
| first_year | smallint | int2 |
| program | text | text |
| waived_courses | ARRAY | _text |
semesters table:
| Name | Data Type | Format |
|---|---|---|
| id | bigint | int8 |
| created_at | timestamp with time zone | timestamptz |
| semester_index | smallint | int2 |
| semester_course_ids | ARRAY | _text |
| user_id | uuid | uuid |
Schema visualizer:
Contributions are welcome! Feel free to open a pull request or submit an issue. If you need help getting started, please contact me on Slack here.

