# juboy/flexisaf-simp architecture

> Architecture diagram of the GitHub repository juboy/flexisaf-simp, 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/juboy/flexisaf-simp
- Repository: https://github.com/juboy/flexisaf-simp

## Overview

Flexisaf-SIMP is a Spring Boot student-information API. Clients submit validated student records or request listings, lookups, searches, updates, and deletion; the controller delegates operations to the student service, which validates business rules and coordinates repositories. New students receive a matric number and department association. A scheduled daily job finds birthday students and sends email. Startup seeds departments, and the application exposes Swagger documentation. Repository and service source supports the main call paths; configuration details and some implementation wiring were not sampled.

Main entry points: [`src/main/java/com/flexisaf/simp/controller/StudentController.java`](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentController.java) (Student Controller), [`src/main/java/com/flexisaf/simp/serviceImpl/StudentServiceImpl.java`](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/serviceImpl/StudentServiceImpl.java) (Student Service Logic), [`src/main/java/com/flexisaf/simp/service/StudentService.java`](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/service/StudentService.java) (Student Service), [`src/main/java/com/flexisaf/simp/repository/DepartmentRepository.java`](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/DepartmentRepository.java) (Department Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_controller["Student Controller"]
  node_request["Student Request"]
  node_errors["Exception Handler"]
  node_swagger["Swagger API Docs"]
end

subgraph group_domain["Student Domain"]
  node_service["Student Service"]
  node_service_impl["Student Service Logic"]
  node_student["Student Record<br/>[Student.java]"]
  node_department["Department<br/>[Department.java]"]
end

subgraph group_persistence["Persistence"]
  node_student_repo["Student Repository"]
  node_department_repo["Department Repository"]
  node_matric_repo["Matric Repository"]
  node_database[("Relational Database")]
end

subgraph group_integrations["Startup And Mail"]
  node_bootstrap["Department Bootstrap<br/>[Bootstrap.java]"]
  node_scheduler["Birthday Scheduler"]
  node_mailer["Mail Sender"]
end

node_client(("API Client"))

node_client -->|"sends requests"| node_controller
node_controller -->|"returns responses"| node_client
node_controller -->|"validates input"| node_request
node_controller -->|"delegates operations"| node_service
node_controller -.->|"triggers daily mail"| node_service
node_service -->|"implemented by"| node_service_impl
node_service_impl -->|"reads and writes"| node_student_repo
node_service_impl -->|"checks department"| node_department_repo
node_service_impl -->|"allocates matric"| node_matric_repo
node_service_impl -->|"builds records"| node_student
node_student_repo -->|"queries students"| node_database
node_department_repo -->|"reads departments"| node_database
node_matric_repo -->|"reads and writes IDs"| node_database
node_bootstrap -->|"seeds departments"| node_department_repo
node_service_impl -->|"sends birthday email"| node_mailer
node_client -->|"views API docs"| node_swagger
node_controller -->|"handled exceptions"| node_errors

click node_controller "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentController.java"
click node_request "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentRequest.java"
click node_errors "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/GlobalExceptionHandler.java"
click node_service "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/service/StudentService.java"
click node_service_impl "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/serviceImpl/StudentServiceImpl.java"
click node_student "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/model/Student.java"
click node_department "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/model/Department.java"
click node_student_repo "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/StudentRepository.java"
click node_department_repo "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/DepartmentRepository.java"
click node_matric_repo "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/LastMatricRepository.java"
click node_bootstrap "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/Bootstrap.java"
click node_scheduler "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentController.java"
click node_swagger "https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/SimpApplication.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_controller,node_request,node_errors,node_swagger,node_client toneBlue
class node_service,node_service_impl,node_student,node_department toneAmber
class node_student_repo,node_department_repo,node_matric_repo,node_database toneMint
class node_bootstrap,node_scheduler,node_mailer toneRose
```

## Components

### HTTP API

- [Student Controller](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentController.java): `src/main/java/com/flexisaf/simp/controller/StudentController.java`
- [Student Request](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentRequest.java): `src/main/java/com/flexisaf/simp/controller/StudentRequest.java`
- [Exception Handler](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/GlobalExceptionHandler.java): `src/main/java/com/flexisaf/simp/controller/GlobalExceptionHandler.java`
- [Swagger API Docs](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/SimpApplication.java): `src/main/java/com/flexisaf/simp/SimpApplication.java`

### Student Domain

- [Student Service](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/service/StudentService.java): `src/main/java/com/flexisaf/simp/service/StudentService.java`
- [Student Service Logic](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/serviceImpl/StudentServiceImpl.java): `src/main/java/com/flexisaf/simp/serviceImpl/StudentServiceImpl.java`
- [Student Record](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/model/Student.java): `src/main/java/com/flexisaf/simp/model/Student.java`
- [Department](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/model/Department.java): `src/main/java/com/flexisaf/simp/model/Department.java`

### Persistence

- [Student Repository](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/StudentRepository.java): `src/main/java/com/flexisaf/simp/repository/StudentRepository.java`
- [Department Repository](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/DepartmentRepository.java): `src/main/java/com/flexisaf/simp/repository/DepartmentRepository.java`
- [Matric Repository](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/repository/LastMatricRepository.java): `src/main/java/com/flexisaf/simp/repository/LastMatricRepository.java`
- **Relational Database**

### Startup And Mail

- [Department Bootstrap](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/Bootstrap.java): `src/main/java/com/flexisaf/simp/Bootstrap.java`
- [Birthday Scheduler](https://github.com/juboy/flexisaf-simp/blob/master/src/main/java/com/flexisaf/simp/controller/StudentController.java): `src/main/java/com/flexisaf/simp/controller/StudentController.java`
- **Mail Sender**

### Other components

- **API Client**

## Connections

- API Client → Student Controller: sends requests
- Student Controller → API Client: returns responses
- Student Controller → Student Request: validates input
- Student Controller → Student Service: delegates operations
- Student Controller → Student Service: triggers daily mail
- Student Service → Student Service Logic: implemented by
- Student Service Logic → Student Repository: reads and writes
- Student Service Logic → Department Repository: checks department
- Student Service Logic → Matric Repository: allocates matric
- Student Service Logic → Student Record: builds records
- Student Repository → Relational Database: queries students
- Department Repository → Relational Database: reads departments
- Matric Repository → Relational Database: reads and writes IDs
- Department Bootstrap → Department Repository: seeds departments
- Student Service Logic → Mail Sender: sends birthday email
- API Client → Swagger API Docs: views API docs
- Student Controller → Exception Handler: handled exceptions
