How chloeg-rowan/course-planner works
Course Planner is a single-user academic planning application: a browser user creates a local account, organizes courses by semester, optionally assigns courses to degree requirements, and reviews credit, GPA, and progress summaries. The REST controllers route requests to authentication, planning, and dashboard services; repositories persist user-scoped entities through JPA. The README documents the browser UI and protected session-backed API, but UI-to-endpoint wiring and database configuration details were not sampled, so those links are not expanded beyond documented behavior.
Main entry points: index.html Browser UI · UserRepository.java User repository · CourseService.java Course management · DashboardService.java Progress calculations
Components 23
API and access
- Browser UI
src/main/resources/static/index.html - Authentication API
src/main/java/com/garvey/course_planner/api/AuthenticationController.java - Session authentication
src/main/java/com/garvey/course_planner/service/AuthenticationService.java - Access security
src/main/java/com/garvey/course_planner/config/SecurityConfiguration.java - API error mapping
src/main/java/com/garvey/course_planner/api/ApiExceptionHandler.java
Academic planning
- Course API
src/main/java/com/garvey/course_planner/api/CourseController.java - Course management
src/main/java/com/garvey/course_planner/service/CourseService.java - Semester API
src/main/java/com/garvey/course_planner/api/SemesterController.java - Semester management
src/main/java/com/garvey/course_planner/service/SemesterService.java - Requirement API
src/main/java/com/garvey/course_planner/api/DegreeRequirementController.java - Requirement management
src/main/java/com/garvey/course_planner/service/DegreeRequirementService.java
Plan summaries
- Dashboard API
src/main/java/com/garvey/course_planner/api/DashboardController.java - Progress calculations
src/main/java/com/garvey/course_planner/service/DashboardService.java
Persistence
- User record
src/main/java/com/garvey/course_planner/model/User.java - Semester record
src/main/java/com/garvey/course_planner/model/Semester.java - Course record
src/main/java/com/garvey/course_planner/model/Course.java - Requirement record
src/main/java/com/garvey/course_planner/model/DegreeRequirement.java - User repository
src/main/java/com/garvey/course_planner/repository/UserRepository.java - Semester repository
src/main/java/com/garvey/course_planner/repository/SemesterRepository.java - Course repository
src/main/java/com/garvey/course_planner/repository/CourseRepository.java - Requirement repository
src/main/java/com/garvey/course_planner/repository/DegreeRequirementRepository.java - PostgreSQL database
Other components
- Browser user
Connections 28
- Browser user → Browser UI: uses
README.md - Browser user → Authentication API: registers
README.md - Browser UI → Course API: manages plan
README.md - Browser UI → Semester API: manages terms
README.md - Browser UI → Requirement API: tracks requirements
README.md - Browser UI → Dashboard API: views progress
README.md - Authentication API → Session authentication: delegates
src/main/java/com/garvey/course_planner/api/AuthenticationController.java - Session authentication → User repository: reads and saves
src/main/java/com/garvey/course_planner/service/AuthenticationService.java - Access security → User repository: loads users
src/main/java/com/garvey/course_planner/config/SecurityConfiguration.java - Course API → Course management: delegates
src/main/java/com/garvey/course_planner/api/CourseController.java - Course management → Course repository: reads and saves
src/main/java/com/garvey/course_planner/service/CourseService.java - Course management → Semester repository: checks ownership
src/main/java/com/garvey/course_planner/service/CourseService.java - Course management → Requirement repository: assigns requirement
src/main/java/com/garvey/course_planner/service/CourseService.java - Semester API → Semester management: delegates
src/main/java/com/garvey/course_planner/api/SemesterController.java - Semester management → Semester repository: reads and saves
src/main/java/com/garvey/course_planner/service/SemesterService.java - Requirement API → Requirement management: delegates
src/main/java/com/garvey/course_planner/api/DegreeRequirementController.java - Requirement management → Requirement repository: reads and saves
src/main/java/com/garvey/course_planner/service/DegreeRequirementService.java - Requirement management → User repository: loads owner
src/main/java/com/garvey/course_planner/service/DegreeRequirementService.java - Dashboard API → Progress calculations: delegates
src/main/java/com/garvey/course_planner/api/DashboardController.java - Progress calculations → Course repository: loads courses
src/main/java/com/garvey/course_planner/service/DashboardService.java - Progress calculations → Semester repository: loads semesters
src/main/java/com/garvey/course_planner/service/DashboardService.java - Progress calculations → Requirement repository: loads requirements
src/main/java/com/garvey/course_planner/service/DashboardService.java - User repository → User record: maps
src/main/java/com/garvey/course_planner/repository/UserRepository.java - Semester repository → Semester record: maps
src/main/java/com/garvey/course_planner/repository/SemesterRepository.java - Course repository → Course record: maps
src/main/java/com/garvey/course_planner/repository/CourseRepository.java - Requirement repository → Requirement record: maps
src/main/java/com/garvey/course_planner/repository/DegreeRequirementRepository.java - PostgreSQL database → User repository: stores
README.md - API error mapping → Authentication API: handles failures