# mockproject24/mockproject_062025_group03 architecture

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

- Interactive diagram: https://gitdiagram.com/mockproject24/mockproject_062025_group03
- Repository: https://github.com/mockproject24/mockproject_062025_group03

## Overview

This appears to be a Spring backend for a criminal case-management system, with user registration/login and a JPA model covering cases, reports, investigations, evidence, warrants, arrests, prosecution, and sentencing. The only sampled application controller is authentication; the tree shows no other domain controllers or services, so the domain model is represented as persisted records rather than an asserted request-to-result workflow. Relationships among those records are based on sampled entity mappings and SOURCE INDEX references; unsampled runtime wiring is omitted.

Main entry points: [`src/main/java/com/group3/MockProject/entity/Case.java`](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Case.java) (Case records), [`src/main/java/com/group3/MockProject/controller/AuthController.java`](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/controller/AuthController.java) (Auth API), [`src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java`](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java) (JWT filter), [`src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java`](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java) (User lookup)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_auth_api["Auth API"]
  node_security_config["Security config"]
  node_jwt_filter["JWT filter"]
  node_jwt_util["JWT utility<br/>[JwtUtil.java]"]
  node_auth_error["Auth entry point"]
end

subgraph group_casework["Casework"]
  node_case_record[("Case records<br/>[Case.java]")]
  node_report_record[("Incident reports<br/>[Report.java]")]
  node_investigation_plan[("Investigation plans")]
  node_evidence_record[("Evidence records<br/>[Envidency.java]")]
  node_suspect_record[("Suspect records<br/>[Suspect.java]")]
end

subgraph group_legal["Legal process"]
  node_arrest_record[("Arrest records<br/>[Arrest.java]")]
  node_warrant_record[("Warrant records<br/>[Warrant.java]")]
  node_prosecution_record[("Prosecution records<br/>[Prosecution.java]")]
  node_sentence_record[("Sentence records<br/>[Sentence.java]")]
end

subgraph group_identity["Users and persistence"]
  node_user_record[("User records<br/>[User.java]")]
  node_role_record[("Role records<br/>[Role.java]")]
  node_user_repository["User repository"]
  node_role_repository["Role repository"]
  node_user_details_service["User lookup"]
  node_user_details["Security principal"]
end

node_client(("API client"))

node_client -->|"requests auth"| node_auth_api
node_auth_api -->|"checks and saves"| node_user_repository
node_auth_api -->|"looks up role"| node_role_repository
node_auth_api -->|"creates token"| node_jwt_util
node_security_config -->|"configures filter"| node_jwt_filter
node_security_config -->|"configures handler"| node_auth_error
node_jwt_filter -->|"validates token"| node_jwt_util
node_jwt_filter -->|"loads user"| node_user_details_service
node_user_details_service -->|"finds username"| node_user_repository
node_user_details_service -->|"builds principal"| node_user_details
node_user_details -->|"maps user"| node_user_record
node_case_record -->|"has reports"| node_report_record
node_case_record -->|"has plans"| node_investigation_plan
node_case_record -->|"has evidence"| node_evidence_record
node_case_record -->|"has suspects"| node_suspect_record
node_case_record -->|"has arrests"| node_arrest_record
node_case_record -->|"has warrants"| node_warrant_record
node_case_record -->|"has prosecutions"| node_prosecution_record
node_case_record -->|"has sentences"| node_sentence_record
node_user_record -->|"assigned role"| node_role_record
node_user_repository -->|"persists users"| node_user_record
node_role_repository -->|"persists roles"| node_role_record

click node_auth_api "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/controller/AuthController.java"
click node_security_config "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/config/SecurityConfig.java"
click node_jwt_filter "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java"
click node_jwt_util "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/util/JwtUtil.java"
click node_auth_error "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/JwtAuthenticationEntryPoint.java"
click node_case_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Case.java"
click node_report_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Report.java"
click node_investigation_plan "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/InvestigationPlan.java"
click node_evidence_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Envidency.java"
click node_suspect_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Suspect.java"
click node_arrest_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Arrest.java"
click node_warrant_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Warrant.java"
click node_prosecution_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Prosecution.java"
click node_sentence_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Sentence.java"
click node_user_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/User.java"
click node_role_record "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Role.java"
click node_user_repository "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/repository/UserRepository.java"
click node_role_repository "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/repository/RoleRepository.java"
click node_user_details_service "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java"
click node_user_details "https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/UserDetailsImpl.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_security_config,node_jwt_filter,node_jwt_util,node_auth_error,node_client toneBlue
class node_case_record,node_report_record,node_investigation_plan,node_evidence_record,node_suspect_record toneAmber
class node_arrest_record,node_warrant_record,node_prosecution_record,node_sentence_record toneMint
class node_user_record,node_role_record,node_user_repository,node_role_repository,node_user_details_service,node_user_details toneRose
```

## Components

### Authentication

- [Auth API](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/controller/AuthController.java): `src/main/java/com/group3/MockProject/controller/AuthController.java`
- [Security config](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/config/SecurityConfig.java): `src/main/java/com/group3/MockProject/config/SecurityConfig.java`
- [JWT filter](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java): `src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java`
- [JWT utility](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/util/JwtUtil.java): `src/main/java/com/group3/MockProject/util/JwtUtil.java`
- [Auth entry point](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/JwtAuthenticationEntryPoint.java): `src/main/java/com/group3/MockProject/security/JwtAuthenticationEntryPoint.java`

### Casework

- [Case records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Case.java): `src/main/java/com/group3/MockProject/entity/Case.java`
- [Incident reports](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Report.java): `src/main/java/com/group3/MockProject/entity/Report.java`
- [Investigation plans](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/InvestigationPlan.java): `src/main/java/com/group3/MockProject/entity/InvestigationPlan.java`
- [Evidence records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Envidency.java): `src/main/java/com/group3/MockProject/entity/Envidency.java`
- [Suspect records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Suspect.java): `src/main/java/com/group3/MockProject/entity/Suspect.java`

### Legal process

- [Arrest records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Arrest.java): `src/main/java/com/group3/MockProject/entity/Arrest.java`
- [Warrant records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Warrant.java): `src/main/java/com/group3/MockProject/entity/Warrant.java`
- [Prosecution records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Prosecution.java): `src/main/java/com/group3/MockProject/entity/Prosecution.java`
- [Sentence records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Sentence.java): `src/main/java/com/group3/MockProject/entity/Sentence.java`

### Users and persistence

- [User records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/User.java): `src/main/java/com/group3/MockProject/entity/User.java`
- [Role records](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/entity/Role.java): `src/main/java/com/group3/MockProject/entity/Role.java`
- [User repository](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/repository/UserRepository.java): `src/main/java/com/group3/MockProject/repository/UserRepository.java`
- [Role repository](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/repository/RoleRepository.java): `src/main/java/com/group3/MockProject/repository/RoleRepository.java`
- [User lookup](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java): `src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java`
- [Security principal](https://github.com/mockproject24/mockproject_062025_group03/blob/main/src/main/java/com/group3/MockProject/security/UserDetailsImpl.java): `src/main/java/com/group3/MockProject/security/UserDetailsImpl.java`

### Other components

- **API client**

## Connections

- API client → Auth API: requests auth (evidence: `src/main/java/com/group3/MockProject/controller/AuthController.java`)
- Auth API → User repository: checks and saves (evidence: `src/main/java/com/group3/MockProject/controller/AuthController.java`)
- Auth API → Role repository: looks up role (evidence: `src/main/java/com/group3/MockProject/controller/AuthController.java`)
- Auth API → JWT utility: creates token (evidence: `src/main/java/com/group3/MockProject/controller/AuthController.java`)
- Security config → JWT filter: configures filter (evidence: `src/main/java/com/group3/MockProject/config/SecurityConfig.java`)
- Security config → Auth entry point: configures handler (evidence: `src/main/java/com/group3/MockProject/config/SecurityConfig.java`)
- JWT filter → JWT utility: validates token (evidence: `src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java`)
- JWT filter → User lookup: loads user (evidence: `src/main/java/com/group3/MockProject/security/JwtAuthenticationFilter.java`)
- User lookup → User repository: finds username (evidence: `src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java`)
- User lookup → Security principal: builds principal (evidence: `src/main/java/com/group3/MockProject/service/impl/UserDetailsServiceImpl.java`)
- Security principal → User records: maps user (evidence: `src/main/java/com/group3/MockProject/security/UserDetailsImpl.java`)
- Case records → Incident reports: has reports (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Investigation plans: has plans (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Evidence records: has evidence (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Suspect records: has suspects (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Arrest records: has arrests (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Warrant records: has warrants (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Prosecution records: has prosecutions (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- Case records → Sentence records: has sentences (evidence: `src/main/java/com/group3/MockProject/entity/Case.java`)
- User records → Role records: assigned role (evidence: `src/main/java/com/group3/MockProject/entity/User.java`)
- User repository → User records: persists users (evidence: `src/main/java/com/group3/MockProject/repository/UserRepository.java`)
- Role repository → Role records: persists roles (evidence: `src/main/java/com/group3/MockProject/repository/RoleRepository.java`)
