# mazinsafer/coogpath architecture

> Architecture diagram of the GitHub repository mazinsafer/coogpath, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/mazinsafer/coogpath
- Repository: https://github.com/mazinsafer/coogpath

## Overview

CoogPath is a student-facing degree-planning application: students register, record completed coursework and planning preferences, inspect degree progress, and request a semester-by-semester roadmap. The backend exposes authentication, student, catalog, requirement, and planning APIs; its planner accounts for prerequisites, planning mode, summer availability, and electives, and persists generated roadmaps. The frontend also provides catalog, transcript, and dashboard views. The README documents PDF export and track/capstone options. Several frontend-to-API details and unsampled controller internals are not shown, so those links are omitted or marked unverified.

Main entry points: [`frontend/src/lib/api.ts`](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/lib/api.ts) (API client), [`backend/src/main/java/com/coogpath/coogpath/repository`](https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/repository) (Data repositories), [`backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java) (Plan generator), [`backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java`](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java) (Student API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_student_ui["Student experience"]
  node_signup["Registration<br/>[page.tsx]"]
  node_login["Sign in<br/>[page.tsx]"]
  node_course_setup["Course preferences<br/>[page.tsx]"]
  node_dashboard["Roadmap dashboard<br/>[page.tsx]"]
  node_requirements_ui["Requirements view<br/>[page.tsx]"]
  node_catalog_ui["Course catalog<br/>[page.tsx]"]
  node_transcript_ui["Transcript view<br/>[page.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_api["API and identity"]
  node_auth_api["Authentication API"]
  node_student_api["Student API"]
  node_registration_logic["Registration service"]
  node_course_api["Course API"]
  node_course_service["Course service<br/>[CourseService.java]"]
  node_requirement_api["Progress API"]
  node_plan_api["Plan API"]
  node_program_api["Degree program API"]
end

subgraph group_degree_data["Degree data"]
  node_degree_entities["Degree and course data"]
  node_student_entities["Student and transcript data"]
  node_repositories["Data repositories"]
end

subgraph group_planning["Roadmap planning"]
  node_planner["Plan generator"]
  node_roadmap_data[("Saved roadmap data")]
end

node_student(("Student"))

node_student -->|"registers"| node_signup
node_student -->|"signs in"| node_login
node_student -->|"sets coursework"| node_course_setup
node_student -->|"views plan"| node_dashboard
node_student -->|"checks progress"| node_requirements_ui
node_student -->|"browses courses"| node_catalog_ui
node_student -->|"views transcript"| node_transcript_ui
node_signup -.->|"uses"| node_api_client
node_login -.->|"uses"| node_api_client
node_course_setup -.->|"uses"| node_api_client
node_dashboard -.->|"uses"| node_api_client
node_requirements_ui -.->|"uses"| node_api_client
node_catalog_ui -.->|"uses"| node_api_client
node_transcript_ui -.->|"uses"| node_api_client
node_auth_api -->|"looks up students"| node_repositories
node_student_api -->|"registers through"| node_registration_logic
node_registration_logic -->|"saves student"| node_repositories
node_course_api -->|"delegates to"| node_course_service
node_course_service -->|"loads courses"| node_repositories
node_requirement_api -->|"loads progress data"| node_repositories
node_plan_api -->|"generates plan"| node_planner
node_program_api -->|"loads programs"| node_repositories
node_planner -->|"reads planning data"| node_repositories
node_planner -->|"saves roadmap"| node_roadmap_data
node_student_api -->|"reads and updates"| node_repositories
node_requirement_api -->|"computes completion"| node_student_entities
node_planner -->|"uses transcript"| node_student_entities
node_planner -->|"checks prerequisites"| node_degree_entities

click node_signup "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/signup/page.tsx"
click node_login "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/login/page.tsx"
click node_course_setup "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/courses/page.tsx"
click node_dashboard "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/dashboard/page.tsx"
click node_requirements_ui "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/requirements/page.tsx"
click node_catalog_ui "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/catalog/page.tsx"
click node_transcript_ui "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/transcript/page.tsx"
click node_api_client "https://github.com/mazinsafer/coogpath/blob/main/frontend/src/lib/api.ts"
click node_auth_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/AuthController.java"
click node_student_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java"
click node_registration_logic "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/StudentService.java"
click node_course_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/CourseController.java"
click node_course_service "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/CourseService.java"
click node_requirement_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/RequirementController.java"
click node_plan_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/PlanController.java"
click node_program_api "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/DegreeProgramController.java"
click node_degree_entities "https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/model"
click node_student_entities "https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/model"
click node_repositories "https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/repository"
click node_planner "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java"
click node_roadmap_data "https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/model/RoadmapSnapshot.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_signup,node_login,node_course_setup,node_dashboard,node_requirements_ui,node_catalog_ui,node_transcript_ui,node_api_client toneBlue
class node_auth_api,node_student_api,node_registration_logic,node_course_api,node_course_service,node_requirement_api,node_plan_api,node_program_api toneAmber
class node_degree_entities,node_student_entities,node_repositories toneMint
class node_planner,node_roadmap_data toneRose
class node_student toneIndigo
```

## Components

### Student experience

- [Registration](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/signup/page.tsx): `frontend/src/app/signup/page.tsx`
- [Sign in](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/login/page.tsx): `frontend/src/app/login/page.tsx`
- [Course preferences](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/courses/page.tsx): `frontend/src/app/courses/page.tsx`
- [Roadmap dashboard](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/dashboard/page.tsx): `frontend/src/app/dashboard/page.tsx`
- [Requirements view](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/requirements/page.tsx): `frontend/src/app/requirements/page.tsx`
- [Course catalog](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/catalog/page.tsx): `frontend/src/app/catalog/page.tsx`
- [Transcript view](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/app/transcript/page.tsx): `frontend/src/app/transcript/page.tsx`
- [API client](https://github.com/mazinsafer/coogpath/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### API and identity

- [Authentication API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/AuthController.java): `backend/src/main/java/com/coogpath/coogpath/controller/AuthController.java`
- [Student API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java): `backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java`
- [Registration service](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/StudentService.java): `backend/src/main/java/com/coogpath/coogpath/service/StudentService.java`
- [Course API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/CourseController.java): `backend/src/main/java/com/coogpath/coogpath/controller/CourseController.java`
- [Course service](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/CourseService.java): `backend/src/main/java/com/coogpath/coogpath/service/CourseService.java`
- [Progress API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/RequirementController.java): `backend/src/main/java/com/coogpath/coogpath/controller/RequirementController.java`
- [Plan API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/PlanController.java): `backend/src/main/java/com/coogpath/coogpath/controller/PlanController.java`
- [Degree program API](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/controller/DegreeProgramController.java): `backend/src/main/java/com/coogpath/coogpath/controller/DegreeProgramController.java`

### Degree data

- [Degree and course data](https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/model): `backend/src/main/java/com/coogpath/coogpath/model`
- [Student and transcript data](https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/model): `backend/src/main/java/com/coogpath/coogpath/model`
- [Data repositories](https://github.com/mazinsafer/coogpath/tree/main/backend/src/main/java/com/coogpath/coogpath/repository): `backend/src/main/java/com/coogpath/coogpath/repository`

### Roadmap planning

- [Plan generator](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java): `backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`
- [Saved roadmap data](https://github.com/mazinsafer/coogpath/blob/main/backend/src/main/java/com/coogpath/coogpath/model/RoadmapSnapshot.java): `backend/src/main/java/com/coogpath/coogpath/model/RoadmapSnapshot.java`

### Other components

- **Student**

## Connections

- Student → Registration: registers
- Student → Sign in: signs in
- Student → Course preferences: sets coursework
- Student → Roadmap dashboard: views plan
- Student → Requirements view: checks progress
- Student → Course catalog: browses courses
- Student → Transcript view: views transcript
- Registration → API client: uses
- Sign in → API client: uses
- Course preferences → API client: uses
- Roadmap dashboard → API client: uses
- Requirements view → API client: uses
- Course catalog → API client: uses
- Transcript view → API client: uses
- Authentication API → Data repositories: looks up students (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/AuthController.java`)
- Student API → Registration service: registers through (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java`)
- Registration service → Data repositories: saves student (evidence: `backend/src/main/java/com/coogpath/coogpath/service/StudentService.java`)
- Course API → Course service: delegates to (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/CourseController.java`)
- Course service → Data repositories: loads courses (evidence: `backend/src/main/java/com/coogpath/coogpath/service/CourseService.java`)
- Progress API → Data repositories: loads progress data (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/RequirementController.java`)
- Plan API → Plan generator: generates plan (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/PlanController.java`)
- Degree program API → Data repositories: loads programs (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/DegreeProgramController.java`)
- Plan generator → Data repositories: reads planning data (evidence: `backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`)
- Plan generator → Saved roadmap data: saves roadmap (evidence: `backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`)
- Student API → Data repositories: reads and updates (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/StudentController.java`)
- Progress API → Student and transcript data: computes completion (evidence: `backend/src/main/java/com/coogpath/coogpath/controller/RequirementController.java`)
- Plan generator → Student and transcript data: uses transcript (evidence: `backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`)
- Plan generator → Degree and course data: checks prerequisites (evidence: `backend/src/main/java/com/coogpath/coogpath/service/PlanGeneratorService.java`)
