# riya2309ai/student-api-backend architecture

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

- Interactive diagram: https://gitdiagram.com/riya2309ai/student-api-backend
- Repository: https://github.com/riya2309ai/student-api-backend

## Overview

Student API Backend is a Spring Boot REST service for student and department records, with signup/login and JWT-based access control. The main workflow is an API client calling a controller, which delegates to a service for validation/mapping and persistence through Spring Data JPA to MySQL; student endpoints also support paging, sorting, search, and age filtering. Authentication is a separate workflow for signup and token issuance, with a JWT filter handling authenticated requests. Edges reflect excerpts, indexed references, or README statements; unsampled details and some runtime configuration are not inferred.

Main entry points: [`src/main/java/com/riya/studentapi/controller/AuthController.java`](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/AuthController.java) (Auth endpoints), [`src/main/java/com/riya/studentapi/repository/UserRepository.java`](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/UserRepository.java) (User repository), [`src/main/java/com/riya/studentapi/service/StudentService.java`](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/StudentService.java) (Student service), [`src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java`](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java) (Error handling)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_student_api["Student endpoints"]
  node_department_api["Department endpoints"]
  node_auth_api["Auth endpoints"]
  node_api_payloads["API DTOs"]
  node_api_response["API response<br/>[ApiResponse.java]"]
  node_error_handler["Error handling"]
end

subgraph group_domain["Domain Services"]
  node_student_service["Student service"]
  node_department_service["Department service"]
  node_student_entities["Student records"]
  node_student_error["Missing student error"]
end

subgraph group_security["Authentication"]
  node_auth_service["Signup service<br/>[AuthService.java]"]
  node_user_details["User lookup"]
  node_jwt_filter["JWT filter"]
  node_jwt_service["JWT service<br/>[JwtService.java]"]
  node_security_config["Security config"]
  node_security_errors["Security handlers"]
end

subgraph group_data["Persistence"]
  node_student_repo["Student repository"]
  node_department_repo["Department repository"]
  node_user_repo["User repository"]
end

node_client(("API client"))
node_mysql[("MySQL")]

node_client -->|"calls"| node_student_api
node_client -->|"calls"| node_department_api
node_client -->|"calls"| node_auth_api
node_student_api -->|"delegates to"| node_student_service
node_department_api -->|"delegates to"| node_department_service
node_auth_api -->|"signs up via"| node_auth_service
node_auth_api -->|"looks up user"| node_user_repo
node_auth_api -->|"issues token"| node_jwt_service
node_student_service -->|"queries and saves"| node_student_repo
node_department_service -->|"queries and saves"| node_department_repo
node_auth_service -->|"saves and finds"| node_user_repo
node_student_service -->|"throws"| node_student_error
node_error_handler -->|"handles"| node_student_error
node_error_handler -->|"builds response"| node_api_response
node_security_config -->|"configures"| node_jwt_filter
node_security_config -->|"configures handlers"| node_security_errors
node_jwt_filter -->|"validates token"| node_jwt_service
node_user_details -->|"loads users"| node_user_repo
node_student_repo -->|"persists via JPA"| node_mysql
node_department_repo -->|"persists via JPA"| node_mysql
node_user_repo -->|"persists via JPA"| node_mysql

click node_student_api "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/StudentController.java"
click node_department_api "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/DepartmentController.java"
click node_auth_api "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/AuthController.java"
click node_api_payloads "https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/dto"
click node_api_response "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/response/ApiResponse.java"
click node_error_handler "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java"
click node_student_service "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/StudentService.java"
click node_department_service "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/DepartmentService.java"
click node_student_entities "https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/entity"
click node_student_error "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/exception/StudentNotFoundException.java"
click node_auth_service "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/AuthService.java"
click node_user_details "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/CustomUserDetailsService.java"
click node_jwt_filter "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/security/JwtAuthenticationFilter.java"
click node_jwt_service "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/security/JwtService.java"
click node_security_config "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/config/SecurityConfig.java"
click node_security_errors "https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/security"
click node_student_repo "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/StudentRepository.java"
click node_department_repo "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/DepartmentRepository.java"
click node_user_repo "https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/UserRepository.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_api,node_department_api,node_auth_api,node_api_payloads,node_api_response,node_error_handler,node_client toneBlue
class node_student_service,node_department_service,node_student_entities,node_student_error,node_mysql toneAmber
class node_auth_service,node_user_details,node_jwt_filter,node_jwt_service,node_security_config,node_security_errors toneMint
class node_student_repo,node_department_repo,node_user_repo toneRose
```

## Components

### REST API

- [Student endpoints](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/StudentController.java): `src/main/java/com/riya/studentapi/controller/StudentController.java`
- [Department endpoints](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/DepartmentController.java): `src/main/java/com/riya/studentapi/controller/DepartmentController.java`
- [Auth endpoints](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/controller/AuthController.java): `src/main/java/com/riya/studentapi/controller/AuthController.java`
- [API DTOs](https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/dto): `src/main/java/com/riya/studentapi/dto`
- [API response](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/response/ApiResponse.java): `src/main/java/com/riya/studentapi/response/ApiResponse.java`
- [Error handling](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java): `src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java`

### Domain Services

- [Student service](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/StudentService.java): `src/main/java/com/riya/studentapi/service/StudentService.java`
- [Department service](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/DepartmentService.java): `src/main/java/com/riya/studentapi/service/DepartmentService.java`
- [Student records](https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/entity): `src/main/java/com/riya/studentapi/entity`
- [Missing student error](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/exception/StudentNotFoundException.java): `src/main/java/com/riya/studentapi/exception/StudentNotFoundException.java`

### Authentication

- [Signup service](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/AuthService.java): `src/main/java/com/riya/studentapi/service/AuthService.java`
- [User lookup](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/service/CustomUserDetailsService.java): `src/main/java/com/riya/studentapi/service/CustomUserDetailsService.java`
- [JWT filter](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/security/JwtAuthenticationFilter.java): `src/main/java/com/riya/studentapi/security/JwtAuthenticationFilter.java`
- [JWT service](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/security/JwtService.java): `src/main/java/com/riya/studentapi/security/JwtService.java`
- [Security config](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/config/SecurityConfig.java): `src/main/java/com/riya/studentapi/config/SecurityConfig.java`
- [Security handlers](https://github.com/riya2309ai/student-api-backend/tree/main/src/main/java/com/riya/studentapi/security): `src/main/java/com/riya/studentapi/security`

### Persistence

- [Student repository](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/StudentRepository.java): `src/main/java/com/riya/studentapi/repository/StudentRepository.java`
- [Department repository](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/DepartmentRepository.java): `src/main/java/com/riya/studentapi/repository/DepartmentRepository.java`
- [User repository](https://github.com/riya2309ai/student-api-backend/blob/main/src/main/java/com/riya/studentapi/repository/UserRepository.java): `src/main/java/com/riya/studentapi/repository/UserRepository.java`

### Other components

- **API client**
- **MySQL**

## Connections

- API client → Student endpoints: calls (evidence: `README.md`)
- API client → Department endpoints: calls (evidence: `README.md`)
- API client → Auth endpoints: calls (evidence: `README.md`)
- Student endpoints → Student service: delegates to (evidence: `src/main/java/com/riya/studentapi/controller/StudentController.java`)
- Department endpoints → Department service: delegates to (evidence: `src/main/java/com/riya/studentapi/controller/DepartmentController.java`)
- Auth endpoints → Signup service: signs up via (evidence: `src/main/java/com/riya/studentapi/controller/AuthController.java`)
- Auth endpoints → User repository: looks up user (evidence: `src/main/java/com/riya/studentapi/controller/AuthController.java`)
- Auth endpoints → JWT service: issues token (evidence: `src/main/java/com/riya/studentapi/controller/AuthController.java`)
- Student service → Student repository: queries and saves (evidence: `src/main/java/com/riya/studentapi/service/StudentService.java`)
- Department service → Department repository: queries and saves (evidence: `src/main/java/com/riya/studentapi/service/DepartmentService.java`)
- Signup service → User repository: saves and finds (evidence: `src/main/java/com/riya/studentapi/service/AuthService.java`)
- Student service → Missing student error: throws (evidence: `src/main/java/com/riya/studentapi/service/StudentService.java`)
- Error handling → Missing student error: handles (evidence: `src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java`)
- Error handling → API response: builds response (evidence: `src/main/java/com/riya/studentapi/handler/GlobalExceptionHandler.java`)
- Security config → JWT filter: configures (evidence: `src/main/java/com/riya/studentapi/config/SecurityConfig.java`)
- Security config → Security handlers: configures handlers (evidence: `src/main/java/com/riya/studentapi/config/SecurityConfig.java`)
- JWT filter → JWT service: validates token (evidence: `src/main/java/com/riya/studentapi/security/JwtAuthenticationFilter.java`)
- User lookup → User repository: loads users (evidence: `src/main/java/com/riya/studentapi/service/CustomUserDetailsService.java`)
- Student repository → MySQL: persists via JPA (evidence: `README.md`)
- Department repository → MySQL: persists via JPA (evidence: `README.md`)
- User repository → MySQL: persists via JPA (evidence: `README.md`)
