# tareqalhashash/jev-claude-codereviewer architecture

> Architecture diagram of the GitHub repository tareqalhashash/jev-claude-codereviewer, 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/tareqalhashash/jev-claude-codereviewer
- Repository: https://github.com/tareqalhashash/jev-claude-codereviewer

## Overview

AI Code Reviewer lets a developer submit a code snippet for Jev triage, then optionally request a Claude deep dive informed by that triage. The frontend owns review state and presents both results; its API calls pass through the Spring controller to separate review services and provider clients. Jev supplies quality and red-flag scores, while Claude returns a markdown review with fixes. The backend proxies both providers so keys remain server-side, and the application is stateless. The README documents this flow; some frontend and configuration wiring is represented at the documented component level.

Main entry points: [`frontend/src/App.tsx`](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/App.tsx) (Review app), [`backend/src/main/java/com/tariqalhashash/codereviewer/service/DeepDiveService.java`](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/service/DeepDiveService.java) (Deep dive), [`backend/src/main/java/com/tariqalhashash/codereviewer/client/JevClient.java`](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/client/JevClient.java) (Jev client), [`backend/src/main/java/com/tariqalhashash/codereviewer/controller/ReviewController.java`](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/controller/ReviewController.java) (Review controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Review interface"]
  node_app["Review app<br/>[App.tsx]"]
  node_code_input["Code input<br/>[CodeInput.tsx]"]
  node_quick_card["Triage card"]
  node_deep_card["Deep review card<br/>[DeepDiveCard.tsx]"]
  node_frontend_api["API wrappers<br/>[api.ts]"]
end

subgraph group_backend["Review API"]
  node_controller["Review controller"]
  node_quick_service["Quick review"]
  node_deep_service["Deep dive"]
  node_jev_client["Jev client<br/>[JevClient.java]"]
  node_error_handler["Error handler"]
  node_anthropic_config["Claude client config"]
end

subgraph group_providers["AI providers"]
  node_jev{{"Jev API"}}
  node_claude{{"Claude API"}}
end

node_developer(("Developer"))

node_developer -->|"enters code"| node_code_input
node_code_input -->|"submits input"| node_app
node_app -->|"renders"| node_code_input
node_app -->|"calls review"| node_frontend_api
node_app -->|"renders triage"| node_quick_card
node_quick_card -->|"requests deep dive"| node_app
node_app -->|"renders review"| node_deep_card
node_frontend_api -->|"posts requests"| node_controller
node_controller -->|"delegates triage"| node_quick_service
node_controller -->|"delegates deep dive"| node_deep_service
node_quick_service -->|"evaluates questions"| node_jev_client
node_jev_client -->|"sends JSON"| node_jev
node_jev -->|"returns answers"| node_jev_client
node_deep_service -->|"requests review"| node_claude
node_anthropic_config -->|"provides client"| node_deep_service
node_claude -->|"returns markdown"| node_deep_service
node_jev_client -.->|"raises upstream error"| node_error_handler
node_deep_service -.->|"raises review error"| node_error_handler

click node_app "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/App.tsx"
click node_code_input "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/CodeInput.tsx"
click node_quick_card "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/QuickReviewCard.tsx"
click node_deep_card "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/DeepDiveCard.tsx"
click node_frontend_api "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/lib/api.ts"
click node_controller "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/controller/ReviewController.java"
click node_quick_service "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/service/QuickReviewService.java"
click node_deep_service "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/service/DeepDiveService.java"
click node_jev_client "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/client/JevClient.java"
click node_error_handler "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/exception/GlobalExceptionHandler.java"
click node_anthropic_config "https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/config/AnthropicClientConfig.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_code_input,node_quick_card,node_deep_card,node_frontend_api toneBlue
class node_controller,node_quick_service,node_deep_service,node_jev_client,node_error_handler,node_anthropic_config toneAmber
class node_jev,node_claude toneMint
class node_developer toneIndigo
```

## Components

### Review interface

- [Review app](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Code input](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/CodeInput.tsx): `frontend/src/components/CodeInput.tsx`
- [Triage card](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/QuickReviewCard.tsx): `frontend/src/components/QuickReviewCard.tsx`
- [Deep review card](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/components/DeepDiveCard.tsx): `frontend/src/components/DeepDiveCard.tsx`
- [API wrappers](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`

### Review API

- [Review controller](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/controller/ReviewController.java): `backend/src/main/java/com/tariqalhashash/codereviewer/controller/ReviewController.java`
- [Quick review](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/service/QuickReviewService.java): `backend/src/main/java/com/tariqalhashash/codereviewer/service/QuickReviewService.java`
- [Deep dive](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/service/DeepDiveService.java): `backend/src/main/java/com/tariqalhashash/codereviewer/service/DeepDiveService.java`
- [Jev client](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/client/JevClient.java): `backend/src/main/java/com/tariqalhashash/codereviewer/client/JevClient.java`
- [Error handler](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/exception/GlobalExceptionHandler.java): `backend/src/main/java/com/tariqalhashash/codereviewer/exception/GlobalExceptionHandler.java`
- [Claude client config](https://github.com/tareqalhashash/jev-claude-codereviewer/blob/main/backend/src/main/java/com/tariqalhashash/codereviewer/config/AnthropicClientConfig.java): `backend/src/main/java/com/tariqalhashash/codereviewer/config/AnthropicClientConfig.java`

### AI providers

- **Jev API**
- **Claude API**

### Other components

- **Developer**

## Connections

- Developer → Code input: enters code
- Code input → Review app: submits input
- Review app → Code input: renders
- Review app → API wrappers: calls review
- Review app → Triage card: renders triage
- Triage card → Review app: requests deep dive
- Review app → Deep review card: renders review
- API wrappers → Review controller: posts requests
- Review controller → Quick review: delegates triage
- Review controller → Deep dive: delegates deep dive
- Quick review → Jev client: evaluates questions
- Jev client → Jev API: sends JSON
- Jev API → Jev client: returns answers
- Deep dive → Claude API: requests review
- Claude client config → Deep dive: provides client
- Claude API → Deep dive: returns markdown
- Jev client → Error handler: raises upstream error
- Deep dive → Error handler: raises review error
