# quannguyen16902/vncoastalviolationmanagement architecture

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

## Overview

Vietnam Coastal Violation Management is a maritime-enforcement administration system. Coast Guard staff use the React application to authenticate, record violations and violators, issue penalty decisions, and track payment; public users can search public information. The Spring backend exposes the system’s management, reporting, and payment capabilities, with persistent records and external media/payment integrations. The README documents reporting, QR access, security, and administration; some corresponding source wiring was not sampled, so uncertain internal calls are not shown.

Main entry points: [`admin/src/main/java/com/system/admin/controller`](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/controller) (REST endpoints), [`fe-admin/src/App.js`](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/fe-admin/src/App.js) (Route and access), [`admin/src/main/java/com/system/admin/repository`](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/repository) (JPA repositories), [`admin/src/main/java/com/system/admin/service/UserService.java`](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/UserService.java) (User management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Route and access<br/>[App.js]"]
  node_authui["Login and account"]
  node_caseui["Violation records"]
  node_decisionui["Penalty decisions"]
  node_adminui["Users and settings"]
  node_publicui["Public search"]
  node_reportui["Reports dashboard"]
  node_authsvc["Auth API client<br/>[auth.service.js]"]
end

subgraph group_api["Spring API"]
  node_backend["REST endpoints"]
  node_auth["JWT security"]
  node_usersvc["User management<br/>[UserService.java]"]
end

subgraph group_domain["Case management"]
  node_violationsvc["Violation handling"]
  node_decisionsvc["Decision handling"]
  node_reporting["Reports and exports"]
  node_repos[("JPA repositories")]
end

subgraph group_integrations["External services"]
  node_vnpay["VNPay integration<br/>[VnPayService.java]"]
  node_cloudinary["Cloudinary media"]
  node_jasper["Jasper reports"]
end

node_staff(("Staff user"))
node_public(("Public user"))
node_paymentprovider["VNPay"]
node_media["Cloudinary"]

node_staff -->|"uses"| node_app
node_public -->|"searches"| node_publicui
node_app -->|"routes"| node_authui
node_app -->|"routes"| node_caseui
node_app -->|"routes"| node_decisionui
node_app -->|"routes"| node_adminui
node_app -->|"routes"| node_reportui
node_authui -->|"requests auth"| node_authsvc
node_authsvc -->|"calls REST"| node_backend
node_caseui -->|"calls REST"| node_backend
node_decisionui -->|"calls REST"| node_backend
node_adminui -->|"calls REST"| node_backend
node_publicui -->|"searches records"| node_backend
node_reportui -->|"requests reports"| node_backend
node_backend -->|"secures endpoints"| node_auth
node_backend -->|"delegates user work"| node_usersvc
node_backend -->|"delegates case work"| node_violationsvc
node_backend -->|"delegates decisions"| node_decisionsvc
node_backend -->|"requests reports"| node_reporting
node_usersvc -->|"reads and writes"| node_repos
node_violationsvc -->|"reads and writes"| node_repos
node_decisionsvc -->|"reads and writes"| node_repos
node_reporting -->|"reads records"| node_repos
node_backend -.->|"requests payment URL"| node_vnpay
node_vnpay -.->|"creates payment request"| node_paymentprovider
node_usersvc -.->|"uploads images"| node_cloudinary
node_cloudinary -.->|"stores media"| node_media
node_backend -.->|"generates exports"| node_jasper

click node_app "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/fe-admin/src/App.js"
click node_authui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/Auth"
click node_caseui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/ViolationRecord"
click node_decisionui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/PenaltyDecision"
click node_adminui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/UsersPage"
click node_publicui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/PublicInfo"
click node_reportui "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/reports"
click node_authsvc "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/fe-admin/src/service/auth.service.js"
click node_backend "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/controller"
click node_auth "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/security"
click node_usersvc "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/UserService.java"
click node_violationsvc "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/ViolationService/ViolationService.java"
click node_decisionsvc "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/DecisionService.java"
click node_reporting "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/report/MasterReportService.java"
click node_repos "https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/repository"
click node_vnpay "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/vnpay_integrated/VnPayService.java"
click node_cloudinary "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/CloudinaryService.java"
click node_jasper "https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/jasper/JasperReportService.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_app,node_authui,node_caseui,node_decisionui,node_adminui,node_publicui,node_reportui,node_authsvc,node_staff,node_public toneBlue
class node_backend,node_auth,node_usersvc toneAmber
class node_violationsvc,node_decisionsvc,node_reporting,node_repos toneMint
class node_vnpay,node_cloudinary,node_jasper toneRose
class node_paymentprovider,node_media toneIndigo
```

## Components

### React client

- [Route and access](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/fe-admin/src/App.js): `fe-admin/src/App.js`
- [Login and account](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/Auth): `fe-admin/src/components/pages/Auth`
- [Violation records](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/ViolationRecord): `fe-admin/src/components/pages/ViolationRecord`
- [Penalty decisions](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/PenaltyDecision): `fe-admin/src/components/pages/PenaltyDecision`
- [Users and settings](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/UsersPage): `fe-admin/src/components/pages/UsersPage`
- [Public search](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/PublicInfo): `fe-admin/src/components/PublicInfo`
- [Reports dashboard](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/fe-admin/src/components/pages/reports): `fe-admin/src/components/pages/reports`
- [Auth API client](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/fe-admin/src/service/auth.service.js): `fe-admin/src/service/auth.service.js`

### Spring API

- [REST endpoints](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/controller): `admin/src/main/java/com/system/admin/controller`
- [JWT security](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/security): `admin/src/main/java/com/system/admin/security`
- [User management](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/UserService.java): `admin/src/main/java/com/system/admin/service/UserService.java`

### Case management

- [Violation handling](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/ViolationService/ViolationService.java): `admin/src/main/java/com/system/admin/service/ViolationService/ViolationService.java`
- [Decision handling](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/DecisionService.java): `admin/src/main/java/com/system/admin/service/DecisionService.java`
- [Reports and exports](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/report/MasterReportService.java): `admin/src/main/java/com/system/admin/service/report/MasterReportService.java`
- [JPA repositories](https://github.com/quannguyen16902/vncoastalviolationmanagement/tree/main/admin/src/main/java/com/system/admin/repository): `admin/src/main/java/com/system/admin/repository`

### External services

- [VNPay integration](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/vnpay_integrated/VnPayService.java): `admin/src/main/java/com/system/admin/vnpay_integrated/VnPayService.java`
- [Cloudinary media](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/CloudinaryService.java): `admin/src/main/java/com/system/admin/service/CloudinaryService.java`
- [Jasper reports](https://github.com/quannguyen16902/vncoastalviolationmanagement/blob/main/admin/src/main/java/com/system/admin/service/jasper/JasperReportService.java): `admin/src/main/java/com/system/admin/service/jasper/JasperReportService.java`

### Other components

- **Staff user**
- **Public user**
- **VNPay**
- **Cloudinary**

## Connections

- Staff user → Route and access: uses
- Public user → Public search: searches
- Route and access → Login and account: routes
- Route and access → Violation records: routes
- Route and access → Penalty decisions: routes
- Route and access → Users and settings: routes
- Route and access → Reports dashboard: routes
- Login and account → Auth API client: requests auth
- Auth API client → REST endpoints: calls REST
- Violation records → REST endpoints: calls REST
- Penalty decisions → REST endpoints: calls REST
- Users and settings → REST endpoints: calls REST
- Public search → REST endpoints: searches records
- Reports dashboard → REST endpoints: requests reports
- REST endpoints → JWT security: secures endpoints
- REST endpoints → User management: delegates user work
- REST endpoints → Violation handling: delegates case work
- REST endpoints → Decision handling: delegates decisions
- REST endpoints → Reports and exports: requests reports
- User management → JPA repositories: reads and writes
- Violation handling → JPA repositories: reads and writes
- Decision handling → JPA repositories: reads and writes
- Reports and exports → JPA repositories: reads records
- REST endpoints → VNPay integration: requests payment URL
- VNPay integration → VNPay: creates payment request
- User management → Cloudinary media: uploads images
- Cloudinary media → Cloudinary: stores media
- REST endpoints → Jasper reports: generates exports
