pennplanner
pennplanner copied to clipboard
๐ Drag-and-drop degree planner for the online MCIT, MSE-DS, and MSE-AI programs at University of Pennsylvania / Penn Engineering
[!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
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
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
Built with
- Typescript
- React
- Tailwind CSS
- Next.js
- Vercel Deployment
- Supabase Auth with Google OAuth
- Supabase's PostgreSQL database
- Highlight.io for observability
Getting started
Prerequisites
- Node.js
- NPM
- Supabase account
Running locally
- 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 dev
Supabase's PostgreSQL database schema
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:
Contributing
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.