# vivek-sandilya18/student-management-system architecture

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

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

## Overview

This is a Spring Boot student-record management application. Its main workflow is to submit a student registration, check for duplicate email or phone, send an OTP by email, verify it, and save the student; users can then search, browse, update, or delete records and view dashboard summaries. The README also describes REST APIs, but the sampled controller primarily serves web views and a paginated data endpoint. Authentication is not implemented in the sampled code, and security permits all requests; OTP delivery depends on JavaMailSender. Database wiring is documented in configuration, while unsampled implementation details are omitted.

Main entry points: [`src/main/java/in/StudentManagement/Controller/StudentController.java`](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Controller/StudentController.java) (Student controller), [`src/main/java/in/StudentManagement/config/SecurityConfig.java`](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/config/SecurityConfig.java) (Request security), [`src/main/java/in/StudentManagement/Service/StudentService.java`](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Service/StudentService.java) (Student service), [`src/main/java/in/StudentManagement/Repository/StudentRepository.java`](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Repository/StudentRepository.java) (Student repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_controller["Student controller"]
  node_templates["Page templates"]
  node_security["Request security"]
end

subgraph group_domain["Student management"]
  node_service["Student service"]
  node_student["Student entity<br/>[Student.java]"]
  node_otpstate["OTP registration state"]
end

subgraph group_persistence["Persistence"]
  node_repository["Student repository"]
  node_dbconfig["Database configuration"]
end

subgraph group_integration["External services"]
  node_mysql[("MySQL database")]
  node_mail["Email service"]
end

node_user(("User"))

node_user -->|"sends requests"| node_security
node_security -->|"permits requests"| node_controller
node_controller -->|"renders pages"| node_templates
node_controller -->|"requests records"| node_service
node_controller -->|"stores pending OTP"| node_otpstate
node_controller -->|"sends OTP email"| node_mail
node_service -->|"queries and saves"| node_repository
node_repository -->|"reads and writes"| node_mysql
node_dbconfig -.->|"configures connection"| node_mysql

click node_controller "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Controller/StudentController.java"
click node_templates "https://github.com/vivek-sandilya18/student-management-system/tree/main/src/main/resources/templates"
click node_security "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/config/SecurityConfig.java"
click node_service "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Service/StudentService.java"
click node_student "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Entity/Student.java"
click node_otpstate "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Controller/StudentController.java"
click node_repository "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Repository/StudentRepository.java"
click node_dbconfig "https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/resources/application.properties"

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_controller,node_templates,node_security,node_user toneBlue
class node_service,node_student,node_otpstate toneAmber
class node_repository,node_dbconfig toneMint
class node_mysql,node_mail toneRose
```

## Components

### Web interface

- [Student controller](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Controller/StudentController.java): `src/main/java/in/StudentManagement/Controller/StudentController.java`
- [Page templates](https://github.com/vivek-sandilya18/student-management-system/tree/main/src/main/resources/templates): `src/main/resources/templates`
- [Request security](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/config/SecurityConfig.java): `src/main/java/in/StudentManagement/config/SecurityConfig.java`

### Student management

- [Student service](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Service/StudentService.java): `src/main/java/in/StudentManagement/Service/StudentService.java`
- [Student entity](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Entity/Student.java): `src/main/java/in/StudentManagement/Entity/Student.java`
- [OTP registration state](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Controller/StudentController.java): `src/main/java/in/StudentManagement/Controller/StudentController.java`

### Persistence

- [Student repository](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/java/in/StudentManagement/Repository/StudentRepository.java): `src/main/java/in/StudentManagement/Repository/StudentRepository.java`
- [Database configuration](https://github.com/vivek-sandilya18/student-management-system/blob/main/src/main/resources/application.properties): `src/main/resources/application.properties`

### External services

- **MySQL database**
- **Email service**

### Other components

- **User**

## Connections

- User → Request security: sends requests
- Request security → Student controller: permits requests
- Student controller → Page templates: renders pages
- Student controller → Student service: requests records
- Student controller → OTP registration state: stores pending OTP
- Student controller → Email service: sends OTP email
- Student service → Student repository: queries and saves
- Student repository → MySQL database: reads and writes
- Database configuration → MySQL database: configures connection
