# shakeazeez/csd_tariff_project architecture

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

- Interactive diagram: https://gitdiagram.com/shakeazeez/csd_tariff_project
- Repository: https://github.com/shakeazeez/csd_tariff_project

## Overview

CSD Tariff Project is a React client backed by a Rust API gateway and Java services for tariffs, users, and news. The main user journey is to use the calculator or industry search, receive tariff information, and retain account or chat history; separate capabilities include authentication and AI-assisted news. The README establishes the service roles and API endpoints, while excerpts show selected routing, controller, embedding, and persistence relationships. Several service-to-service and client-to-gateway links are documented only at a high level; those are marked unverified.

Main entry points: [`backend/router/src/main.rs`](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/router/src/main.rs) (API gateway), [`frontend/tarrif-project/src/App.jsx`](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/App.jsx) (React app), [`backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java`](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java) (Tariff API), [`backend/news/src/main/java/com/tariff/news/controller/NewsController.java`](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/controller/NewsController.java) (News API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["User interface"]
  node_react["React app<br/>[App.jsx]"]
  node_calc["Tariff calculator<br/>[Calculator.jsx]"]
  node_industry["Industry search<br/>[Bank.jsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.jsx]"]
  node_login["Login<br/>[Login.jsx]"]
  node_chat["News chat<br/>[ChatBot.jsx]"]
  node_newsview["News feed<br/>[News.jsx]"]
end

subgraph group_gateway["Gateway and auth"]
  node_router["API gateway<br/>[main.rs]"]
  node_auth["JWT authentication<br/>[auth.rs]"]
end

subgraph group_tariffs["Tariff service"]
  node_tariffapi["Tariff API"]
  node_tariffcalc["Tariff calculation"]
  node_industrysearch["Industry search logic"]
  node_tariffdata[("Tariff data<br/>[Tariff.java]")]
end

subgraph group_accounts["User service"]
  node_userapi["User API"]
  node_authapi["Account authentication"]
  node_userstore[("User records<br/>[User.java]")]
end

subgraph group_news["News service"]
  node_newsapi["News API"]
  node_embedding["News analysis"]
  node_historyapi["Chat history"]
  node_historydb[("Chat records<br/>[ChatHistory.java]")]
end

node_user(("App user"))
node_openai["OpenAI API"]
node_newsprovider["News API provider"]

node_user -->|"uses"| node_react
node_react -->|"routes to"| node_calc
node_react -->|"routes to"| node_industry
node_react -->|"routes to"| node_dashboard
node_react -->|"routes to"| node_login
node_react -->|"routes to"| node_chat
node_react -->|"routes to"| node_newsview
node_calc -.->|"requests through"| node_router
node_industry -.->|"requests through"| node_router
node_login -.->|"requests through"| node_router
node_router -.->|"configures auth"| node_auth
node_router -.->|"routes tariff"| node_tariffapi
node_router -.->|"routes users"| node_userapi
node_router -.->|"routes news"| node_newsapi
node_tariffapi -->|"delegates calculation"| node_tariffcalc
node_tariffapi -->|"delegates search"| node_industrysearch
node_tariffapi -->|"uses tariff data"| node_tariffdata
node_userapi -->|"uses user records"| node_userstore
node_authapi -->|"uses accounts"| node_userstore
node_newsapi -->|"delegates analysis"| node_embedding
node_newsapi -->|"uses history"| node_historyapi
node_historyapi -->|"persists records"| node_historydb
node_embedding -->|"calls"| node_openai
node_embedding -.->|"fetches articles"| node_newsprovider
node_chat -.->|"requests through"| node_router
node_newsview -.->|"requests through"| node_router

click node_react "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/App.jsx"
click node_calc "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Calculator.jsx"
click node_industry "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Bank.jsx"
click node_dashboard "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Dashboard.jsx"
click node_login "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Login.jsx"
click node_chat "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/ChatBot.jsx"
click node_newsview "https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/News.jsx"
click node_router "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/router/src/main.rs"
click node_auth "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/router/src/auth.rs"
click node_tariffapi "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java"
click node_tariffcalc "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/TariffCalculationImpl.java"
click node_industrysearch "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/BankIndustrySearchServiceImpl.java"
click node_tariffdata "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/tariff/Tariff.java"
click node_userapi "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/controller/GeneralUserController.java"
click node_authapi "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/controller/AuthUserController.java"
click node_userstore "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/user/User.java"
click node_newsapi "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/controller/NewsController.java"
click node_embedding "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/service/NewsEmbeddingService.java"
click node_historyapi "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/history/ChatHistoryService.java"
click node_historydb "https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/history/ChatHistory.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_react,node_calc,node_industry,node_dashboard,node_login,node_chat,node_newsview,node_user toneBlue
class node_router,node_auth toneAmber
class node_tariffapi,node_tariffcalc,node_industrysearch,node_tariffdata,node_openai,node_newsprovider toneMint
class node_userapi,node_authapi,node_userstore toneRose
class node_newsapi,node_embedding,node_historyapi,node_historydb toneIndigo
```

## Components

### User interface

- [React app](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/App.jsx): `frontend/tarrif-project/src/App.jsx`
- [Tariff calculator](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Calculator.jsx): `frontend/tarrif-project/src/pages/Calculator.jsx`
- [Industry search](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Bank.jsx): `frontend/tarrif-project/src/pages/Bank.jsx`
- [Dashboard](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Dashboard.jsx): `frontend/tarrif-project/src/pages/Dashboard.jsx`
- [Login](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/Login.jsx): `frontend/tarrif-project/src/pages/Login.jsx`
- [News chat](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/ChatBot.jsx): `frontend/tarrif-project/src/pages/ChatBot.jsx`
- [News feed](https://github.com/shakeazeez/csd_tariff_project/blob/main/frontend/tarrif-project/src/pages/News.jsx): `frontend/tarrif-project/src/pages/News.jsx`

### Gateway and auth

- [API gateway](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/router/src/main.rs): `backend/router/src/main.rs`
- [JWT authentication](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/router/src/auth.rs): `backend/router/src/auth.rs`

### Tariff service

- [Tariff API](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java): `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java`
- [Tariff calculation](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/TariffCalculationImpl.java): `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/TariffCalculationImpl.java`
- [Industry search logic](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/BankIndustrySearchServiceImpl.java): `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/service/BankIndustrySearchServiceImpl.java`
- [Tariff data](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/tariff/Tariff.java): `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/tariff/Tariff.java`

### User service

- [User API](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/controller/GeneralUserController.java): `backend/user/src/main/java/com/user/controller/GeneralUserController.java`
- [Account authentication](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/controller/AuthUserController.java): `backend/user/src/main/java/com/user/controller/AuthUserController.java`
- [User records](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/user/src/main/java/com/user/user/User.java): `backend/user/src/main/java/com/user/user/User.java`

### News service

- [News API](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/controller/NewsController.java): `backend/news/src/main/java/com/tariff/news/controller/NewsController.java`
- [News analysis](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/service/NewsEmbeddingService.java): `backend/news/src/main/java/com/tariff/news/service/NewsEmbeddingService.java`
- [Chat history](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/history/ChatHistoryService.java): `backend/news/src/main/java/com/tariff/news/history/ChatHistoryService.java`
- [Chat records](https://github.com/shakeazeez/csd_tariff_project/blob/main/backend/news/src/main/java/com/tariff/news/history/ChatHistory.java): `backend/news/src/main/java/com/tariff/news/history/ChatHistory.java`

### Other components

- **App user**
- **OpenAI API**
- **News API provider**

## Connections

- App user → React app: uses
- React app → Tariff calculator: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- React app → Industry search: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- React app → Dashboard: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- React app → Login: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- React app → News chat: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- React app → News feed: routes to (evidence: `frontend/tarrif-project/src/App.jsx`)
- Tariff calculator → API gateway: requests through
- Industry search → API gateway: requests through
- Login → API gateway: requests through
- API gateway → JWT authentication: configures auth (evidence: `backend/router/src/main.rs`)
- API gateway → Tariff API: routes tariff
- API gateway → User API: routes users
- API gateway → News API: routes news
- Tariff API → Tariff calculation: delegates calculation (evidence: `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java`)
- Tariff API → Industry search logic: delegates search (evidence: `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java`)
- Tariff API → Tariff data: uses tariff data (evidence: `backend/tariffCalc/src/main/java/com/tariff/calculation/tariffCalc/controller/TariffController.java`)
- User API → User records: uses user records (evidence: `backend/user/src/main/java/com/user/controller/GeneralUserController.java`)
- Account authentication → User records: uses accounts (evidence: `backend/user/src/main/java/com/user/controller/AuthUserController.java`)
- News API → News analysis: delegates analysis (evidence: `backend/news/src/main/java/com/tariff/news/controller/NewsController.java`)
- News API → Chat history: uses history (evidence: `backend/news/src/main/java/com/tariff/news/controller/NewsController.java`)
- Chat history → Chat records: persists records (evidence: `backend/news/src/main/java/com/tariff/news/history/ChatHistoryService.java`)
- News analysis → OpenAI API: calls (evidence: `backend/news/src/main/java/com/tariff/news/service/NewsEmbeddingService.java`)
- News analysis → News API provider: fetches articles
- News chat → API gateway: requests through
- News feed → API gateway: requests through
