CourseSimplified is a Java/JavaFX degree-planning application for San Jose State University roadmaps. It loads course and program data from an external API, builds a prerequisite tree, and lets each user track course progress as Remaining, In Progress, or Completed.
The current root project includes:
- A JavaFX GUI with login, registration, and per-user saved progress
- A roadmap viewer with prerequisite tree navigation
- Course status management with prerequisite validation
- Local JSON persistence for user accounts and roadmap progress
- A CLI entry point preserved from earlier development stages
- Sign in or create an account before entering the planner
- Select a major:
- Computer Science
- Software Engineering
- Load and browse the roadmap as a prerequisite tree
- Update course status:
RemainingIn ProgressCompleted
- Prevent users from marking a course
In ProgressorCompleteduntil prerequisites are completed - Show progress counts for completed, in-progress, and remaining courses
- Restore user-specific progress and last selected major across sessions
- Java 21
- JavaFX 21.0.2
- Maven
- Gson
- JSoup
- JUnit
src/main/java/coursesimplified/
├── api/ External API access
├── cli/ Command-line interface
├── display/ Console tree rendering
├── gui/ JavaFX application, login, and planner UI
├── model/ Core domain model
├── repository/ Roadmap loading abstractions and implementations
├── service/ Application logic, persistence, authentication
├── CourseSimplifiedBootstrap.java
└── Main.java
CourseSimplified follows a layered design:
guihandles the JavaFX interfaceservicehandles authentication, roadmap workflow, and status updatesrepositoryloads roadmap dataapiretrieves external course/program informationmodelrepresents majors, courses, graphs, users, and statuses
The main Facade in the system is CourseTreeService, which simplifies roadmap loading, progress retrieval, and course status updates for both the GUI and CLI.
- Java 21
- Maven 3.x
- Internet connection for loading roadmap data from the external API
mvn clean compilemvn javafx:runThe GUI is the primary interface for the project.
mvn exec:javamvn testThe automated tests cover roadmap loading, status updates, invalid course handling, progress counting, prerequisite enforcement, and JSON persistence behavior.
- User accounts are stored locally with hashed passwords
- Course progress is stored locally per user in JSON
- Legacy completed-only progress data remains compatible with the current persistence format
- The app opens to the login screen first
- The planner UI is the main submission interface