A native macOS application for planning your college course schedule. Built with SwiftUI and Core Data.
- 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
- 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
- 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
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.
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.
ClassPlanner ships with bundled course datasets including catalog information (names, professors, schedules, descriptions), student evaluation scores, workload ratings, and enrollment numbers.
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.
- macOS 11.0 or later
- Xcode 13+ (to build from source)
- Clone the repository
- Open
ClassPlanner.xcodeprojin Xcode - Build and run (Cmd+R)
No external dependencies are required beyond Swift Package Manager's built-in resolution.
This project is provided as-is for educational purposes.
