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.
![PennPlanner logo](public/logo.png)
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.local
file 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.ts
b. Remove
HighlightInit
from_app.tsx
c. Replace
next.config.js
with the default config:
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
}
module.exports = nextConfig
- Run the development server
npm run dev
users
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.