# oburakcinar/student-management-system architecture

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

- Interactive diagram: https://gitdiagram.com/oburakcinar/student-management-system
- Repository: https://github.com/oburakcinar/student-management-system

## Overview

This is a Spring MVC school-management application. Users register or log in, then role-based navigation leads to admin management, student course/assignment views, or teacher course, assignment, and grading workflows. Controllers call domain services; the service and DAO layers provide access to school records. The README documents the major role capabilities, while sampled controller code confirms selected service calls. Several service implementations, DAO implementations, and the security configuration were not sampled, so uncertain wiring is not expanded.

Main entry points: [`src/main/java/com/burak/studentmanagement/controller/TeacherController.java`](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/TeacherController.java) (Teacher controller), [`src/main/java/com/burak/studentmanagement/controller/AdminController.java`](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/AdminController.java) (Admin controller), [`src/main/java/com/burak/studentmanagement/controller/StudentController.java`](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/StudentController.java) (Student controller), [`src/main/java/com/burak/studentmanagement/controller/RegistrationController.java`](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/RegistrationController.java) (Registration controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Access and accounts"]
  node_login["Login controller"]
  node_registration["Registration controller"]
  node_security["Security configuration"]
  node_success["Login success handler"]
end

subgraph group_admin["School administration"]
  node_admincontroller["Admin controller"]
end

subgraph group_learning["Coursework workflows"]
  node_studentcontroller["Student controller"]
  node_teachercontroller["Teacher controller"]
end

subgraph group_persistence["Domain and persistence"]
  node_studentservice["Student service"]
  node_teacherservice["Teacher service"]
  node_courseservice["Course service<br/>[CourseService.java]"]
  node_enrollmentservice["Enrollment service"]
  node_assignmentservice["Assignment service"]
  node_assignmentdetailservice["Assignment status service"]
  node_gradeservice["Grade service"]
  node_daos["DAO implementations"]
  node_entities["School entities"]
  node_mysql[("MySQL database")]
end

node_user(("Web user"))

node_user -->|"opens login"| node_login
node_user -->|"registers"| node_registration
node_user -->|"manages school"| node_admincontroller
node_user -->|"views coursework"| node_studentcontroller
node_user -->|"manages coursework"| node_teachercontroller
node_security -->|"uses handler"| node_success
node_success -->|"looks up student"| node_studentservice
node_success -->|"looks up teacher"| node_teacherservice
node_registration -->|"registers student"| node_studentservice
node_registration -->|"registers teacher"| node_teacherservice
node_registration -->|"looks up role"| node_daos
node_admincontroller -->|"manages courses"| node_courseservice
node_admincontroller -->|"manages students"| node_studentservice
node_admincontroller -->|"manages teachers"| node_teacherservice
node_admincontroller -->|"manages enrollment"| node_enrollmentservice
node_admincontroller -->|"removes grades"| node_gradeservice
node_studentcontroller -->|"loads student"| node_studentservice
node_studentcontroller -->|"loads course"| node_courseservice
node_studentcontroller -->|"loads enrollment"| node_enrollmentservice
node_studentcontroller -->|"reads status"| node_assignmentdetailservice
node_studentcontroller -->|"saves completion"| node_assignmentdetailservice
node_teachercontroller -->|"loads teacher"| node_teacherservice
node_teachercontroller -->|"loads course"| node_courseservice
node_teachercontroller -->|"loads enrollment"| node_enrollmentservice
node_teachercontroller -->|"saves assignment"| node_assignmentservice
node_teachercontroller -->|"saves statuses"| node_assignmentdetailservice
node_teachercontroller -->|"loads grade"| node_gradeservice
node_teachercontroller -->|"saves enrollment"| node_enrollmentservice
node_daos -->|"accesses records"| node_mysql

click node_login "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/LoginController.java"
click node_registration "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/RegistrationController.java"
click node_security "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/config/DemoSecurityConfig.java"
click node_success "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/config/CustomAuthenticationSuccessHandler.java"
click node_admincontroller "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/AdminController.java"
click node_studentcontroller "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/StudentController.java"
click node_teachercontroller "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/TeacherController.java"
click node_studentservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/StudentService.java"
click node_teacherservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/TeacherService.java"
click node_courseservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/CourseService.java"
click node_enrollmentservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/StudentCourseDetailsService.java"
click node_assignmentservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/AssignmentService.java"
click node_assignmentdetailservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/AssignmentDetailsService.java"
click node_gradeservice "https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/GradeDetailsService.java"
click node_daos "https://github.com/oburakcinar/student-management-system/tree/main/src/main/java/com/burak/studentmanagement/dao"
click node_entities "https://github.com/oburakcinar/student-management-system/tree/main/src/main/java/com/burak/studentmanagement/entity"

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_login,node_registration,node_security,node_success,node_user toneBlue
class node_admincontroller toneAmber
class node_studentcontroller,node_teachercontroller toneMint
class node_studentservice,node_teacherservice,node_courseservice,node_enrollmentservice,node_assignmentservice,node_assignmentdetailservice,node_gradeservice,node_daos,node_entities,node_mysql toneRose
```

## Components

### Access and accounts

- [Login controller](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/LoginController.java): `src/main/java/com/burak/studentmanagement/controller/LoginController.java`
- [Registration controller](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/RegistrationController.java): `src/main/java/com/burak/studentmanagement/controller/RegistrationController.java`
- [Security configuration](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/config/DemoSecurityConfig.java): `src/main/java/com/burak/studentmanagement/config/DemoSecurityConfig.java`
- [Login success handler](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/config/CustomAuthenticationSuccessHandler.java): `src/main/java/com/burak/studentmanagement/config/CustomAuthenticationSuccessHandler.java`

### School administration

- [Admin controller](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/AdminController.java): `src/main/java/com/burak/studentmanagement/controller/AdminController.java`

### Coursework workflows

- [Student controller](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/StudentController.java): `src/main/java/com/burak/studentmanagement/controller/StudentController.java`
- [Teacher controller](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/controller/TeacherController.java): `src/main/java/com/burak/studentmanagement/controller/TeacherController.java`

### Domain and persistence

- [Student service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/StudentService.java): `src/main/java/com/burak/studentmanagement/service/StudentService.java`
- [Teacher service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/TeacherService.java): `src/main/java/com/burak/studentmanagement/service/TeacherService.java`
- [Course service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/CourseService.java): `src/main/java/com/burak/studentmanagement/service/CourseService.java`
- [Enrollment service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/StudentCourseDetailsService.java): `src/main/java/com/burak/studentmanagement/service/StudentCourseDetailsService.java`
- [Assignment service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/AssignmentService.java): `src/main/java/com/burak/studentmanagement/service/AssignmentService.java`
- [Assignment status service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/AssignmentDetailsService.java): `src/main/java/com/burak/studentmanagement/service/AssignmentDetailsService.java`
- [Grade service](https://github.com/oburakcinar/student-management-system/blob/main/src/main/java/com/burak/studentmanagement/service/GradeDetailsService.java): `src/main/java/com/burak/studentmanagement/service/GradeDetailsService.java`
- [DAO implementations](https://github.com/oburakcinar/student-management-system/tree/main/src/main/java/com/burak/studentmanagement/dao): `src/main/java/com/burak/studentmanagement/dao`
- [School entities](https://github.com/oburakcinar/student-management-system/tree/main/src/main/java/com/burak/studentmanagement/entity): `src/main/java/com/burak/studentmanagement/entity`
- **MySQL database**

### Other components

- **Web user**

## Connections

- Web user → Login controller: opens login
- Web user → Registration controller: registers
- Web user → Admin controller: manages school
- Web user → Student controller: views coursework
- Web user → Teacher controller: manages coursework
- Security configuration → Login success handler: uses handler
- Login success handler → Student service: looks up student
- Login success handler → Teacher service: looks up teacher
- Registration controller → Student service: registers student
- Registration controller → Teacher service: registers teacher
- Registration controller → DAO implementations: looks up role
- Admin controller → Course service: manages courses
- Admin controller → Student service: manages students
- Admin controller → Teacher service: manages teachers
- Admin controller → Enrollment service: manages enrollment
- Admin controller → Grade service: removes grades
- Student controller → Student service: loads student
- Student controller → Course service: loads course
- Student controller → Enrollment service: loads enrollment
- Student controller → Assignment status service: reads status
- Student controller → Assignment status service: saves completion
- Teacher controller → Teacher service: loads teacher
- Teacher controller → Course service: loads course
- Teacher controller → Enrollment service: loads enrollment
- Teacher controller → Assignment service: saves assignment
- Teacher controller → Assignment status service: saves statuses
- Teacher controller → Grade service: loads grade
- Teacher controller → Enrollment service: saves enrollment
- DAO implementations → MySQL database: accesses records
