# sarowar-islam/shcms-backend architecture

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

- Interactive diagram: https://gitdiagram.com/sarowar-islam/shcms-backend
- Repository: https://github.com/sarowar-islam/shcms-backend

## Overview

CUET-SHCMS is a Spring Boot backend for hostel users to authenticate, submit complaints, and let staff or administrators review, assign, update, and resolve them. Separate REST capabilities manage users and hall configuration, while health monitoring and startup seeding support operations. The sampled complaint and service code shows controller-to-service-to-repository calls; the README documents PostgreSQL and additional API capabilities. Some controllers and seeding behavior were not excerpted, so their internal links are limited to relationships supported by the source index or README.

Main entry points: [`src/main/java/cuet/shcms/app/service/ComplaintService.java`](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/ComplaintService.java) (Complaint lifecycle), [`src/main/java/cuet/shcms/app/service/UserService.java`](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/UserService.java) (User management), [`src/main/java/cuet/shcms/app/controller/AuthController.java`](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/AuthController.java) (Authentication API), [`src/main/java/cuet/shcms/app/repository/ComplaintRepository.java`](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/ComplaintRepository.java) (Complaint repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_auth_api["Authentication API"]
  node_complaints_api["Complaint API"]
  node_users_api["User API"]
  node_config_api["Config API"]
  node_health_api["Health API"]
  node_complaint_dto["Complaint payloads<br/>[ComplaintDTO.java]"]
  node_login_payloads["Login payloads<br/>[LoginResponse.java]"]
  node_user_payloads["User payloads<br/>[UserRequest.java]"]
end

subgraph group_security["Authentication"]
  node_security_config["Security routing"]
  node_jwt_filter["JWT request filter"]
  node_jwt_util["JWT operations<br/>[JwtUtil.java]"]
  node_auth_errors["Auth errors"]
end

subgraph group_domain["Domain Services"]
  node_user_service["User management<br/>[UserService.java]"]
  node_complaint_service["Complaint lifecycle"]
  node_config_service["Hall configuration"]
  node_data_seeder["Startup seeding<br/>[DataSeeder.java]"]
end

subgraph group_persistence["Persistence"]
  node_complaint_entity["Complaint records<br/>[Complaint.java]"]
  node_update_entity["Complaint updates"]
  node_user_entity["User records<br/>[User.java]"]
  node_config_entity["Config record<br/>[SystemConfig.java]"]
  node_complaint_repo["Complaint repository"]
  node_user_repo["User repository"]
  node_config_repo["Config repository"]
end

node_client(("Frontend / users"))
node_postgres[("PostgreSQL")]

node_client -->|"logs in"| node_auth_api
node_client -->|"manages complaints"| node_complaints_api
node_client -.->|"manages users"| node_users_api
node_client -->|"configures hall"| node_config_api
node_client -->|"checks health"| node_health_api
node_auth_api -->|"authenticates"| node_user_service
node_auth_api -->|"creates token"| node_jwt_util
node_auth_api -->|"uses payloads"| node_login_payloads
node_complaints_api -->|"handles requests"| node_complaint_service
node_complaints_api -->|"maps responses"| node_complaint_dto
node_users_api -->|"manages users"| node_user_service
node_users_api -->|"uses payloads"| node_user_payloads
node_config_api -->|"reads and updates"| node_config_service
node_security_config -->|"registers filter"| node_jwt_filter
node_security_config -->|"configures failures"| node_auth_errors
node_jwt_filter -->|"validates tokens"| node_jwt_util
node_jwt_filter -->|"loads user"| node_user_service
node_user_service -->|"queries and saves"| node_user_repo
node_complaint_service -->|"queries and saves"| node_complaint_repo
node_complaint_service -->|"reads configuration"| node_config_repo
node_config_service -->|"reads and saves"| node_config_repo
node_data_seeder -->|"seeds users"| node_user_repo
node_data_seeder -->|"seeds complaints"| node_complaint_repo
node_complaint_service -->|"updates records"| node_complaint_entity
node_complaint_service -->|"adds updates"| node_update_entity
node_user_service -->|"manages records"| node_user_entity
node_config_service -->|"manages record"| node_config_entity
node_complaint_repo -->|"persists"| node_complaint_entity
node_user_repo -->|"persists"| node_user_entity
node_config_repo -->|"persists"| node_config_entity
node_complaint_repo -->|"stores records"| node_postgres
node_user_repo -->|"stores records"| node_postgres
node_config_repo -->|"stores records"| node_postgres
node_health_api -->|"checks connection"| node_postgres

click node_auth_api "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/AuthController.java"
click node_complaints_api "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/ComplaintController.java"
click node_users_api "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/UserController.java"
click node_config_api "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/SystemConfigController.java"
click node_health_api "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/HealthController.java"
click node_complaint_dto "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/ComplaintDTO.java"
click node_login_payloads "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/LoginResponse.java"
click node_user_payloads "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/UserRequest.java"
click node_security_config "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/SecurityConfig.java"
click node_jwt_filter "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtAuthenticationFilter.java"
click node_jwt_util "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtUtil.java"
click node_auth_errors "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtAuthenticationEntryPoint.java"
click node_user_service "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/UserService.java"
click node_complaint_service "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/ComplaintService.java"
click node_config_service "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/SystemConfigService.java"
click node_data_seeder "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/seeder/DataSeeder.java"
click node_complaint_entity "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/Complaint.java"
click node_update_entity "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/ComplaintUpdate.java"
click node_user_entity "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/User.java"
click node_config_entity "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/SystemConfig.java"
click node_complaint_repo "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/ComplaintRepository.java"
click node_user_repo "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/UserRepository.java"
click node_config_repo "https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/SystemConfigRepository.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_auth_api,node_complaints_api,node_users_api,node_config_api,node_health_api,node_complaint_dto,node_login_payloads,node_user_payloads,node_client toneBlue
class node_security_config,node_jwt_filter,node_jwt_util,node_auth_errors,node_postgres toneAmber
class node_user_service,node_complaint_service,node_config_service,node_data_seeder toneMint
class node_complaint_entity,node_update_entity,node_user_entity,node_config_entity,node_complaint_repo,node_user_repo,node_config_repo toneRose
```

## Components

### REST API

- [Authentication API](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/AuthController.java): `src/main/java/cuet/shcms/app/controller/AuthController.java`
- [Complaint API](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/ComplaintController.java): `src/main/java/cuet/shcms/app/controller/ComplaintController.java`
- [User API](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/UserController.java): `src/main/java/cuet/shcms/app/controller/UserController.java`
- [Config API](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/SystemConfigController.java): `src/main/java/cuet/shcms/app/controller/SystemConfigController.java`
- [Health API](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/controller/HealthController.java): `src/main/java/cuet/shcms/app/controller/HealthController.java`
- [Complaint payloads](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/ComplaintDTO.java): `src/main/java/cuet/shcms/app/dto/ComplaintDTO.java`
- [Login payloads](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/LoginResponse.java): `src/main/java/cuet/shcms/app/dto/LoginResponse.java`
- [User payloads](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/dto/UserRequest.java): `src/main/java/cuet/shcms/app/dto/UserRequest.java`

### Authentication

- [Security routing](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/SecurityConfig.java): `src/main/java/cuet/shcms/app/security/SecurityConfig.java`
- [JWT request filter](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtAuthenticationFilter.java): `src/main/java/cuet/shcms/app/security/JwtAuthenticationFilter.java`
- [JWT operations](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtUtil.java): `src/main/java/cuet/shcms/app/security/JwtUtil.java`
- [Auth errors](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/security/JwtAuthenticationEntryPoint.java): `src/main/java/cuet/shcms/app/security/JwtAuthenticationEntryPoint.java`

### Domain Services

- [User management](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/UserService.java): `src/main/java/cuet/shcms/app/service/UserService.java`
- [Complaint lifecycle](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/ComplaintService.java): `src/main/java/cuet/shcms/app/service/ComplaintService.java`
- [Hall configuration](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/service/SystemConfigService.java): `src/main/java/cuet/shcms/app/service/SystemConfigService.java`
- [Startup seeding](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/seeder/DataSeeder.java): `src/main/java/cuet/shcms/app/seeder/DataSeeder.java`

### Persistence

- [Complaint records](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/Complaint.java): `src/main/java/cuet/shcms/app/entity/Complaint.java`
- [Complaint updates](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/ComplaintUpdate.java): `src/main/java/cuet/shcms/app/entity/ComplaintUpdate.java`
- [User records](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/User.java): `src/main/java/cuet/shcms/app/entity/User.java`
- [Config record](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/entity/SystemConfig.java): `src/main/java/cuet/shcms/app/entity/SystemConfig.java`
- [Complaint repository](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/ComplaintRepository.java): `src/main/java/cuet/shcms/app/repository/ComplaintRepository.java`
- [User repository](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/UserRepository.java): `src/main/java/cuet/shcms/app/repository/UserRepository.java`
- [Config repository](https://github.com/sarowar-islam/shcms-backend/blob/main/src/main/java/cuet/shcms/app/repository/SystemConfigRepository.java): `src/main/java/cuet/shcms/app/repository/SystemConfigRepository.java`

### Other components

- **Frontend / users**
- **PostgreSQL**

## Connections

- Frontend / users → Authentication API: logs in (evidence: `README.md`)
- Frontend / users → Complaint API: manages complaints (evidence: `README.md`)
- Frontend / users → User API: manages users
- Frontend / users → Config API: configures hall (evidence: `README.md`)
- Frontend / users → Health API: checks health (evidence: `README.md`)
- Authentication API → User management: authenticates (evidence: `src/main/java/cuet/shcms/app/controller/AuthController.java`)
- Authentication API → JWT operations: creates token (evidence: `src/main/java/cuet/shcms/app/controller/AuthController.java`)
- Authentication API → Login payloads: uses payloads (evidence: `src/main/java/cuet/shcms/app/controller/AuthController.java`)
- Complaint API → Complaint lifecycle: handles requests (evidence: `src/main/java/cuet/shcms/app/controller/ComplaintController.java`)
- Complaint API → Complaint payloads: maps responses (evidence: `src/main/java/cuet/shcms/app/controller/ComplaintController.java`)
- User API → User management: manages users (evidence: `src/main/java/cuet/shcms/app/controller/UserController.java`)
- User API → User payloads: uses payloads (evidence: `src/main/java/cuet/shcms/app/controller/UserController.java`)
- Config API → Hall configuration: reads and updates (evidence: `src/main/java/cuet/shcms/app/controller/SystemConfigController.java`)
- Security routing → JWT request filter: registers filter (evidence: `src/main/java/cuet/shcms/app/security/SecurityConfig.java`)
- Security routing → Auth errors: configures failures (evidence: `src/main/java/cuet/shcms/app/security/SecurityConfig.java`)
- JWT request filter → JWT operations: validates tokens (evidence: `src/main/java/cuet/shcms/app/security/JwtAuthenticationFilter.java`)
- JWT request filter → User management: loads user (evidence: `src/main/java/cuet/shcms/app/security/JwtAuthenticationFilter.java`)
- User management → User repository: queries and saves (evidence: `src/main/java/cuet/shcms/app/service/UserService.java`)
- Complaint lifecycle → Complaint repository: queries and saves (evidence: `src/main/java/cuet/shcms/app/service/ComplaintService.java`)
- Complaint lifecycle → Config repository: reads configuration (evidence: `src/main/java/cuet/shcms/app/service/ComplaintService.java`)
- Hall configuration → Config repository: reads and saves (evidence: `src/main/java/cuet/shcms/app/service/SystemConfigService.java`)
- Startup seeding → User repository: seeds users (evidence: `src/main/java/cuet/shcms/app/seeder/DataSeeder.java`)
- Startup seeding → Complaint repository: seeds complaints (evidence: `src/main/java/cuet/shcms/app/seeder/DataSeeder.java`)
- Complaint lifecycle → Complaint records: updates records (evidence: `src/main/java/cuet/shcms/app/service/ComplaintService.java`)
- Complaint lifecycle → Complaint updates: adds updates (evidence: `src/main/java/cuet/shcms/app/service/ComplaintService.java`)
- User management → User records: manages records (evidence: `src/main/java/cuet/shcms/app/service/UserService.java`)
- Hall configuration → Config record: manages record (evidence: `src/main/java/cuet/shcms/app/service/SystemConfigService.java`)
- Complaint repository → Complaint records: persists (evidence: `src/main/java/cuet/shcms/app/repository/ComplaintRepository.java`)
- User repository → User records: persists (evidence: `src/main/java/cuet/shcms/app/repository/UserRepository.java`)
- Config repository → Config record: persists (evidence: `src/main/java/cuet/shcms/app/repository/SystemConfigRepository.java`)
- Complaint repository → PostgreSQL: stores records (evidence: `README.md`)
- User repository → PostgreSQL: stores records (evidence: `README.md`)
- Config repository → PostgreSQL: stores records (evidence: `README.md`)
- Health API → PostgreSQL: checks connection (evidence: `README.md`)
