Skip to content

qu8n/pennplanner

Repository files navigation

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

🎓 Interactive degree planner for the online MCIT and MSE-DS programs at Penn Engineering

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages