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

Latest commit

 

History

History
126 lines (93 loc) · 3.58 KB

README.md

File metadata and controls

126 lines (93 loc) · 3.58 KB

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.