# brel7/student-management architecture

> Architecture diagram of the GitHub repository brel7/student-management, 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/brel7/student-management
- Repository: https://github.com/brel7/student-management

## Overview

This is a Spring-based student-management REST API. A client sends CRUD requests to student, department, or enrollment controllers; each delegates to a service, which uses a Spring Data JPA repository for persistence. Enrollment records link students and courses and carry dates, grades, and status. The tree also contains a course entity and repository, but no course controller or service is shown. The README is empty, and only some implementation files were sampled, so unsampled wiring and database configuration are not inferred.

Main entry points: [`src/main/java/tn/esprit/studentmanagement/entities/Enrollment.java`](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Enrollment.java) (Enrollment), [`src/main/java/tn/esprit/studentmanagement/repositories/StudentRepository.java`](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/StudentRepository.java) (Student Repository), [`src/main/java/tn/esprit/studentmanagement/repositories/DepartmentRepository.java`](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/DepartmentRepository.java) (Department Repository), [`src/main/java/tn/esprit/studentmanagement/repositories/EnrollmentRepository.java`](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/EnrollmentRepository.java) (Enrollment Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_student_controller["Student API"]
  node_department_controller["Department API"]
  node_enrollment_controller["Enrollment API"]
end

subgraph group_services["Business Services"]
  node_student_service["Student Service"]
  node_department_service["Department Service"]
  node_enrollment_service["Enrollment Service"]
end

subgraph group_persistence["Persistence"]
  node_student_repository["Student Repository"]
  node_department_repository["Department Repository"]
  node_enrollment_repository["Enrollment Repository"]
  node_course_repository["Course Repository"]
  node_database[("Relational Store")]
end

subgraph group_domain["Domain Model"]
  node_student_entity["Student<br/>[Student.java]"]
  node_department_entity["Department<br/>[Department.java]"]
  node_enrollment_entity["Enrollment<br/>[Enrollment.java]"]
  node_course_entity["Course<br/>[Course.java]"]
  node_status_entity["Enrollment Status<br/>[Status.java]"]
end

node_client(("API Client"))

node_client -->|"sends requests"| node_student_controller
node_client -->|"sends requests"| node_department_controller
node_client -->|"sends requests"| node_enrollment_controller
node_student_controller -->|"delegates CRUD"| node_student_service
node_department_controller -->|"delegates CRUD"| node_department_service
node_enrollment_controller -->|"delegates CRUD"| node_enrollment_service
node_student_service -->|"reads and writes"| node_student_repository
node_department_service -->|"reads and writes"| node_department_repository
node_enrollment_service -->|"reads and writes"| node_enrollment_repository
node_student_repository -->|"persists entities"| node_database
node_department_repository -->|"persists entities"| node_database
node_enrollment_repository -->|"persists entities"| node_database
node_course_repository -->|"persists entities"| node_database
node_student_repository -->|"manages"| node_student_entity
node_department_repository -->|"manages"| node_department_entity
node_enrollment_repository -->|"manages"| node_enrollment_entity
node_course_repository -->|"manages"| node_course_entity
node_enrollment_entity -->|"references"| node_student_entity
node_enrollment_entity -->|"references"| node_course_entity
node_enrollment_entity -->|"uses status"| node_status_entity

click node_student_controller "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/StudentController.java"
click node_department_controller "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/DepartmentController.java"
click node_enrollment_controller "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/EnrollmentController.java"
click node_student_service "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/StudentService.java"
click node_department_service "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/DepartmentService.java"
click node_enrollment_service "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/EnrollmentService.java"
click node_student_repository "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/StudentRepository.java"
click node_department_repository "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/DepartmentRepository.java"
click node_enrollment_repository "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/EnrollmentRepository.java"
click node_course_repository "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/CourseRepository.java"
click node_student_entity "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Student.java"
click node_department_entity "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Department.java"
click node_enrollment_entity "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Enrollment.java"
click node_course_entity "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Course.java"
click node_status_entity "https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Status.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_student_controller,node_department_controller,node_enrollment_controller,node_client toneBlue
class node_student_service,node_department_service,node_enrollment_service toneAmber
class node_student_repository,node_department_repository,node_enrollment_repository,node_course_repository,node_database toneMint
class node_student_entity,node_department_entity,node_enrollment_entity,node_course_entity,node_status_entity toneRose
```

## Components

### REST API

- [Student API](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/StudentController.java): `src/main/java/tn/esprit/studentmanagement/controllers/StudentController.java`
- [Department API](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/DepartmentController.java): `src/main/java/tn/esprit/studentmanagement/controllers/DepartmentController.java`
- [Enrollment API](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/controllers/EnrollmentController.java): `src/main/java/tn/esprit/studentmanagement/controllers/EnrollmentController.java`

### Business Services

- [Student Service](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/StudentService.java): `src/main/java/tn/esprit/studentmanagement/services/StudentService.java`
- [Department Service](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/DepartmentService.java): `src/main/java/tn/esprit/studentmanagement/services/DepartmentService.java`
- [Enrollment Service](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/services/EnrollmentService.java): `src/main/java/tn/esprit/studentmanagement/services/EnrollmentService.java`

### Persistence

- [Student Repository](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/StudentRepository.java): `src/main/java/tn/esprit/studentmanagement/repositories/StudentRepository.java`
- [Department Repository](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/DepartmentRepository.java): `src/main/java/tn/esprit/studentmanagement/repositories/DepartmentRepository.java`
- [Enrollment Repository](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/EnrollmentRepository.java): `src/main/java/tn/esprit/studentmanagement/repositories/EnrollmentRepository.java`
- [Course Repository](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/repositories/CourseRepository.java): `src/main/java/tn/esprit/studentmanagement/repositories/CourseRepository.java`
- **Relational Store**

### Domain Model

- [Student](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Student.java): `src/main/java/tn/esprit/studentmanagement/entities/Student.java`
- [Department](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Department.java): `src/main/java/tn/esprit/studentmanagement/entities/Department.java`
- [Enrollment](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Enrollment.java): `src/main/java/tn/esprit/studentmanagement/entities/Enrollment.java`
- [Course](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Course.java): `src/main/java/tn/esprit/studentmanagement/entities/Course.java`
- [Enrollment Status](https://github.com/brel7/student-management/blob/main/src/main/java/tn/esprit/studentmanagement/entities/Status.java): `src/main/java/tn/esprit/studentmanagement/entities/Status.java`

### Other components

- **API Client**

## Connections

- API Client → Student API: sends requests
- API Client → Department API: sends requests
- API Client → Enrollment API: sends requests
- Student API → Student Service: delegates CRUD
- Department API → Department Service: delegates CRUD
- Enrollment API → Enrollment Service: delegates CRUD
- Student Service → Student Repository: reads and writes
- Department Service → Department Repository: reads and writes
- Enrollment Service → Enrollment Repository: reads and writes
- Student Repository → Relational Store: persists entities
- Department Repository → Relational Store: persists entities
- Enrollment Repository → Relational Store: persists entities
- Course Repository → Relational Store: persists entities
- Student Repository → Student: manages
- Department Repository → Department: manages
- Enrollment Repository → Enrollment: manages
- Course Repository → Course: manages
- Enrollment → Student: references
- Enrollment → Course: references
- Enrollment → Enrollment Status: uses status
