Skip to content

edvintb/ClassPlanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ClassPlanner

A native macOS application for planning your college course schedule. Built with SwiftUI and Core Data.

ClassPlanner Screenshot

Features

Schedule Planning

  • Create and manage multiple named schedules across up to 8 semesters
  • Drag and drop courses between semesters
  • Copy schedules to explore different plans
  • Track GPA with per-semester grade assignments
  • Prerequisite validation across semesters

Course Discovery

  • Search the undergraduate course catalog by name or course ID
  • Filter by day of week, time range, and semester
  • Sort by rating, workload, or enrollment
  • View course details including professor, description, ratings, and workload

Concentration Tracking

  • Create custom concentrations (majors) with requirement categories
  • Track progress toward fulfilling each category (e.g. "3/5 required")
  • Color-code categories and courses for visual organization
  • Pre-loaded General Education requirements

Demo

Adding Courses to a Schedule

https://github.com/edvintb/ClassPlanner/raw/master/assets/course-creation-demo.mp4

Browse or search the course catalog in the left panel, then drag courses into your schedule. Click any course to view details, edit grades, or manage prerequisites.

Creating a Concentration

https://github.com/edvintb/ClassPlanner/raw/master/assets/major-creation-demo.mp4

Define your concentration with requirement categories and assign courses to track your progress toward completing your major.

Data Sources

ClassPlanner ships with bundled course datasets including catalog information (names, professors, schedules, descriptions), student evaluation scores, workload ratings, and enrollment numbers.

Architecture

The app follows an MVVM architecture:

ClassPlanner/
├── Models/              # Core Data entities (Course, Concentration, Category)
├── ViewModels/          # State management and business logic
│   ├── ScheduleVM       # Schedule state, GPA calculation, auto-save
│   ├── CourseStoreVM    # Search, filtering, and sorting
│   ├── ConcentrationVM  # Major tracking
│   └── SharedVM         # Global app state
├── Views/               # SwiftUI views
│   ├── Schedule/        # Semester grid, course cards
│   ├── Panel/           # Side panel with search, editors
│   ├── Concentrations/  # Major and category views
│   └── Onboarding/      # First-time user guides
├── Majors/              # Pre-built concentration templates
└── External/            # Helper utilities

Persistence: Core Data with CloudKit sync support. Schedules are serialized as JSON files in the app's Documents directory.

Requirements

  • macOS 11.0 or later
  • Xcode 13+ (to build from source)

Building

  1. Clone the repository
  2. Open ClassPlanner.xcodeproj in Xcode
  3. Build and run (Cmd+R)

No external dependencies are required beyond Swift Package Manager's built-in resolution.

License

This project is provided as-is for educational purposes.

About

Project to plan univeristy classes

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages