# creaturek/teaching-assistance architecture

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

- Interactive diagram: https://gitdiagram.com/creaturek/teaching-assistance
- Repository: https://github.com/creaturek/teaching-assistance

## Overview

Teaching is a teacher-facing AI-assisted course authoring platform with a separate administration area. Teachers manage courses, enter course information, generate and edit objectives and syllabi, then generate and edit lecture materials; authentication and admin functions support that workflow. The Vue client calls a Spring Boot API, whose services use MyBatis mappers for MySQL and AI services for model-assisted generation. README capabilities are included where source excerpts were not provided; those unsampled links are shown only at the documented subsystem level.

Main entry points: [`frontend/src/api/courseManger.ts`](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/api/courseManger.ts) (API clients), [`backend/src/main/java/com/java_web/backend/Teacher/Service/MaterialService.java`](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Service/MaterialService.java) (Material service), [`backend/src/main/java/com/java_web/backend/Common/Mapper/CourseMapper.java`](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/CourseMapper.java) (Course mapper), [`backend/src/main/java/com/java_web/backend/Common/Mapper/UserMapper.java`](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/UserMapper.java) (User mapper)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_webapp["Vue application<br/>[App.vue]"]
  node_router["Routes and guards<br/>[index.ts]"]
  node_courseui["Course workspace<br/>[CourseManage.vue]"]
  node_objectiveui["Course objectives"]
  node_outlineui["Course outline<br/>[CourseOutline.vue]"]
  node_lectureui["Lecture editor"]
  node_adminui["Admin dashboard<br/>[Admin.vue]"]
  node_clientapi["API clients<br/>[courseManger.ts]"]
end

subgraph group_authoring["Course authoring API"]
  node_courseapi["Course endpoints"]
  node_objectiveapi["Objective endpoints"]
  node_syllabusapi["Syllabus endpoints"]
  node_materialapi["Material endpoints"]
  node_coursesvc["Course service<br/>[CourseService.java]"]
  node_materialsvc["Material service"]
end

subgraph group_ai["AI generation"]
  node_llmapi["Generation endpoints<br/>[LLMController.java]"]
  node_objectivesvc["Objective generation"]
  node_syllabussvc["Syllabus generation"]
  node_initialsvc["Initial syllabus"]
  node_lecturesvc["Lecture generation"]
  node_jsonmdsvc["JSON to Markdown"]
end

subgraph group_platform["Identity and administration"]
  node_signup["Signup endpoint"]
  node_signupsvc["Signup service<br/>[SignupService.java]"]
  node_jwt["JWT service<br/>[JWTService.java]"]
  node_adminusers["User administration"]
  node_adminstats["Usage statistics"]
  node_restrictions["Feature restrictions"]
end

subgraph group_data["Persistence"]
  node_mysql[("MySQL database")]
  node_coursemapper["Course mapper<br/>[CourseMapper.java]"]
  node_usermapper["User mapper<br/>[UserMapper.java]"]
  node_syllabusmapper["Syllabus mapper"]
  node_materialmapper["Material mapper"]
end

node_teacher(("Teacher"))
node_admin(("Administrator"))
node_model{{"DashScope model API"}}

node_teacher -->|"uses"| node_webapp
node_admin -->|"uses"| node_webapp
node_webapp -->|"renders routes"| node_router
node_router -->|"routes to"| node_courseui
node_router -->|"routes to"| node_adminui
node_courseui -->|"requests courses"| node_clientapi
node_objectiveui -->|"requests generation"| node_clientapi
node_outlineui -->|"requests generation"| node_clientapi
node_lectureui -->|"requests generation"| node_clientapi
node_adminui -->|"requests administration"| node_clientapi
node_clientapi -->|"HTTP requests"| node_courseapi
node_clientapi -->|"HTTP requests"| node_objectiveapi
node_clientapi -->|"HTTP requests"| node_syllabusapi
node_clientapi -->|"HTTP requests"| node_materialapi
node_courseapi -->|"delegates"| node_coursesvc
node_materialapi -->|"delegates"| node_materialsvc
node_llmapi -->|"generates objectives"| node_objectivesvc
node_llmapi -->|"generates syllabus"| node_syllabussvc
node_llmapi -->|"generates lecture"| node_materialsvc
node_objectivesvc -->|"sends prompts"| node_model
node_syllabussvc -->|"sends prompts"| node_model
node_initialsvc -->|"sends prompts"| node_model
node_lecturesvc -->|"sends prompts"| node_model
node_jsonmdsvc -->|"sends prompts"| node_model
node_materialsvc -->|"builds initial syllabus"| node_initialsvc
node_materialsvc -->|"generates lecture"| node_lecturesvc
node_signup -->|"registers user"| node_signupsvc
node_signupsvc -->|"reads and writes"| node_usermapper
node_adminusers -->|"reads and writes"| node_usermapper
node_adminusers -->|"issues token"| node_jwt
node_adminstats -->|"counts users"| node_usermapper
node_adminstats -->|"counts courses"| node_coursemapper
node_restrictions -->|"manages restrictions"| node_mysql
node_coursesvc -->|"reads and writes"| node_coursemapper
node_materialsvc -->|"checks course access"| node_coursemapper
node_materialsvc -->|"reads syllabus"| node_syllabusmapper
node_materialsvc -->|"reads and writes material"| node_materialmapper
node_coursemapper -->|"queries"| node_mysql
node_usermapper -->|"queries"| node_mysql
node_syllabusmapper -->|"queries"| node_mysql
node_materialmapper -->|"queries"| node_mysql

click node_webapp "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/App.vue"
click node_router "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/router/index.ts"
click node_courseui "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseManage.vue"
click node_objectiveui "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseDescription.vue"
click node_outlineui "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseOutline.vue"
click node_lectureui "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/TeachingLecture.vue"
click node_adminui "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/views/Admin.vue"
click node_clientapi "https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/api/courseManger.ts"
click node_courseapi "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseController.java"
click node_objectiveapi "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseObjectiveController.java"
click node_syllabusapi "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/SyllabusController.java"
click node_materialapi "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/MaterialController.java"
click node_coursesvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Service/CourseService.java"
click node_materialsvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Service/MaterialService.java"
click node_llmapi "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/LLMController.java"
click node_objectivesvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMIntroductionAndTargetService.java"
click node_syllabussvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMSyllabusService.java"
click node_initialsvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMInitialSyllabusService.java"
click node_lecturesvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMLectureService.java"
click node_jsonmdsvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMJsonToMarkdownService.java"
click node_signup "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Controller/SignupController.java"
click node_signupsvc "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/SignupService.java"
click node_jwt "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/JWTService.java"
click node_adminusers "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminUserService.java"
click node_adminstats "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminStatisticsService.java"
click node_restrictions "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminRestrictionService.java"
click node_coursemapper "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/CourseMapper.java"
click node_usermapper "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/UserMapper.java"
click node_syllabusmapper "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/SyllabusMapper.java"
click node_materialmapper "https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/MaterialMapper.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_webapp,node_router,node_courseui,node_objectiveui,node_outlineui,node_lectureui,node_adminui,node_clientapi toneBlue
class node_courseapi,node_objectiveapi,node_syllabusapi,node_materialapi,node_coursesvc,node_materialsvc toneAmber
class node_llmapi,node_objectivesvc,node_syllabussvc,node_initialsvc,node_lecturesvc,node_jsonmdsvc,node_model toneMint
class node_signup,node_signupsvc,node_jwt,node_adminusers,node_adminstats,node_restrictions toneRose
class node_mysql,node_coursemapper,node_usermapper,node_syllabusmapper,node_materialmapper,node_teacher,node_admin toneIndigo
```

## Components

### Web client

- [Vue application](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/App.vue): `frontend/src/App.vue`
- [Routes and guards](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/router/index.ts): `frontend/src/router/index.ts`
- [Course workspace](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseManage.vue): `frontend/src/components/CourseManage.vue`
- [Course objectives](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseDescription.vue): `frontend/src/components/CourseDescription.vue`
- [Course outline](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/CourseOutline.vue): `frontend/src/components/CourseOutline.vue`
- [Lecture editor](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/components/TeachingLecture.vue): `frontend/src/components/TeachingLecture.vue`
- [Admin dashboard](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/views/Admin.vue): `frontend/src/views/Admin.vue`
- [API clients](https://github.com/creaturek/teaching-assistance/blob/master/frontend/src/api/courseManger.ts): `frontend/src/api/courseManger.ts`

### Course authoring API

- [Course endpoints](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseController.java): `backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseController.java`
- [Objective endpoints](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseObjectiveController.java): `backend/src/main/java/com/java_web/backend/Teacher/Controller/CourseObjectiveController.java`
- [Syllabus endpoints](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/SyllabusController.java): `backend/src/main/java/com/java_web/backend/Teacher/Controller/SyllabusController.java`
- [Material endpoints](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/MaterialController.java): `backend/src/main/java/com/java_web/backend/Teacher/Controller/MaterialController.java`
- [Course service](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Service/CourseService.java): `backend/src/main/java/com/java_web/backend/Teacher/Service/CourseService.java`
- [Material service](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Service/MaterialService.java): `backend/src/main/java/com/java_web/backend/Teacher/Service/MaterialService.java`

### AI generation

- [Generation endpoints](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Teacher/Controller/LLMController.java): `backend/src/main/java/com/java_web/backend/Teacher/Controller/LLMController.java`
- [Objective generation](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMIntroductionAndTargetService.java): `backend/src/main/java/com/java_web/backend/Common/Service/LLMIntroductionAndTargetService.java`
- [Syllabus generation](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMSyllabusService.java): `backend/src/main/java/com/java_web/backend/Common/Service/LLMSyllabusService.java`
- [Initial syllabus](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMInitialSyllabusService.java): `backend/src/main/java/com/java_web/backend/Common/Service/LLMInitialSyllabusService.java`
- [Lecture generation](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMLectureService.java): `backend/src/main/java/com/java_web/backend/Common/Service/LLMLectureService.java`
- [JSON to Markdown](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/LLMJsonToMarkdownService.java): `backend/src/main/java/com/java_web/backend/Common/Service/LLMJsonToMarkdownService.java`

### Identity and administration

- [Signup endpoint](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Controller/SignupController.java): `backend/src/main/java/com/java_web/backend/Common/Controller/SignupController.java`
- [Signup service](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/SignupService.java): `backend/src/main/java/com/java_web/backend/Common/Service/SignupService.java`
- [JWT service](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Service/JWTService.java): `backend/src/main/java/com/java_web/backend/Common/Service/JWTService.java`
- [User administration](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminUserService.java): `backend/src/main/java/com/java_web/backend/Admin/Service/AdminUserService.java`
- [Usage statistics](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminStatisticsService.java): `backend/src/main/java/com/java_web/backend/Admin/Service/AdminStatisticsService.java`
- [Feature restrictions](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Admin/Service/AdminRestrictionService.java): `backend/src/main/java/com/java_web/backend/Admin/Service/AdminRestrictionService.java`

### Persistence

- **MySQL database**
- [Course mapper](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/CourseMapper.java): `backend/src/main/java/com/java_web/backend/Common/Mapper/CourseMapper.java`
- [User mapper](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/UserMapper.java): `backend/src/main/java/com/java_web/backend/Common/Mapper/UserMapper.java`
- [Syllabus mapper](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/SyllabusMapper.java): `backend/src/main/java/com/java_web/backend/Common/Mapper/SyllabusMapper.java`
- [Material mapper](https://github.com/creaturek/teaching-assistance/blob/master/backend/src/main/java/com/java_web/backend/Common/Mapper/MaterialMapper.java): `backend/src/main/java/com/java_web/backend/Common/Mapper/MaterialMapper.java`

### Other components

- **Teacher**
- **Administrator**
- **DashScope model API**

## Connections

- Teacher → Vue application: uses
- Administrator → Vue application: uses
- Vue application → Routes and guards: renders routes
- Routes and guards → Course workspace: routes to
- Routes and guards → Admin dashboard: routes to
- Course workspace → API clients: requests courses
- Course objectives → API clients: requests generation
- Course outline → API clients: requests generation
- Lecture editor → API clients: requests generation
- Admin dashboard → API clients: requests administration
- API clients → Course endpoints: HTTP requests
- API clients → Objective endpoints: HTTP requests
- API clients → Syllabus endpoints: HTTP requests
- API clients → Material endpoints: HTTP requests
- Course endpoints → Course service: delegates
- Material endpoints → Material service: delegates
- Generation endpoints → Objective generation: generates objectives
- Generation endpoints → Syllabus generation: generates syllabus
- Generation endpoints → Material service: generates lecture
- Objective generation → DashScope model API: sends prompts
- Syllabus generation → DashScope model API: sends prompts
- Initial syllabus → DashScope model API: sends prompts
- Lecture generation → DashScope model API: sends prompts
- JSON to Markdown → DashScope model API: sends prompts
- Material service → Initial syllabus: builds initial syllabus
- Material service → Lecture generation: generates lecture
- Signup endpoint → Signup service: registers user
- Signup service → User mapper: reads and writes
- User administration → User mapper: reads and writes
- User administration → JWT service: issues token
- Usage statistics → User mapper: counts users
- Usage statistics → Course mapper: counts courses
- Feature restrictions → MySQL database: manages restrictions
- Course service → Course mapper: reads and writes
- Material service → Course mapper: checks course access
- Material service → Syllabus mapper: reads syllabus
- Material service → Material mapper: reads and writes material
- Course mapper → MySQL database: queries
- User mapper → MySQL database: queries
- Syllabus mapper → MySQL database: queries
- Material mapper → MySQL database: queries
