Skip to content
This repository has been archived by the owner on Aug 15, 2024. It is now read-only.
/ pennplanner Public archive

🎓 Drag-and-drop degree planner for the online MCIT, MSE-DS, and MSE-AI programs at University of Pennsylvania / Penn Engineering

License

Notifications You must be signed in to change notification settings

qu8n/pennplanner

Repository files navigation

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

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


PennPlanner preview

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

  1. Clone the repo
git clone
  1. Install NPM packages
npm install
  1. 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.

  1. 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
  1. 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:

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.

About

🎓 Drag-and-drop degree planner for the online MCIT, MSE-DS, and MSE-AI programs at University of Pennsylvania / Penn Engineering

Topics

Resources

License

Stars

Watchers

Forks

Languages