# asadmulani5/sentinelqa architecture

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

## Overview

SentinelQA is a web-site QA scanning app: a user submits a URL, the backend fetches and extracts site metadata, an LLM generates an assessment, and the frontend presents the score and findings. The README describes unrelated portfolio projects, so this map follows the sampled SentinelQA source. The crawler is an HTTP/HTML metadata extractor; no browser automation or persistent store is shown.

Main entry points: [`backend/agent.py`](https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py) (Agent orchestration), [`frontend/src/App.jsx`](https://github.com/asadmulani5/sentinelqa/blob/main/frontend/src/App.jsx) (Scan and results UI), [`backend/main.py`](https://github.com/asadmulani5/sentinelqa/blob/main/backend/main.py) (Scan API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Frontend"]
  node_ui["Scan and results UI<br/>[App.jsx]"]
end

subgraph group_backend["Backend API"]
  node_api["Scan API<br/>[main.py]"]
end

subgraph group_agent["Scan Agent"]
  node_runner["Agent orchestration<br/>[agent.py]"]
  node_crawler["Site crawler<br/>[agent.py]"]
  node_analyzer["AI analysis<br/>[agent.py]"]
end

node_user(("Site owner"))
node_site["Target website"]
node_groq["Groq LLM API"]

node_user -->|"enters URL"| node_ui
node_ui -->|"POST /scan"| node_api
node_api -->|"runs scan"| node_runner
node_runner -->|"crawls URL"| node_crawler
node_crawler -->|"fetches HTML"| node_site
node_crawler -->|"returns metadata"| node_runner
node_runner -->|"requests analysis"| node_analyzer
node_analyzer -->|"sends prompt"| node_groq
node_groq -->|"returns completion"| node_analyzer
node_analyzer -->|"returns assessment"| node_runner
node_runner -->|"returns report"| node_api
node_api -->|"returns JSON"| node_ui
node_ui -->|"shows findings"| node_user

click node_ui "https://github.com/asadmulani5/sentinelqa/blob/main/frontend/src/App.jsx"
click node_api "https://github.com/asadmulani5/sentinelqa/blob/main/backend/main.py"
click node_runner "https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py"
click node_crawler "https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py"
click node_analyzer "https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py"

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_ui toneBlue
class node_api toneAmber
class node_runner,node_crawler,node_analyzer,node_groq toneMint
class node_user,node_site toneIndigo
```

## Components

### Frontend

- [Scan and results UI](https://github.com/asadmulani5/sentinelqa/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`

### Backend API

- [Scan API](https://github.com/asadmulani5/sentinelqa/blob/main/backend/main.py): `backend/main.py`

### Scan Agent

- [Agent orchestration](https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py): `backend/agent.py`
- [Site crawler](https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py): `backend/agent.py`
- [AI analysis](https://github.com/asadmulani5/sentinelqa/blob/main/backend/agent.py): `backend/agent.py`

### Other components

- **Site owner**
- **Target website**
- **Groq LLM API**

## Connections

- Site owner → Scan and results UI: enters URL
- Scan and results UI → Scan API: POST /scan
- Scan API → Agent orchestration: runs scan
- Agent orchestration → Site crawler: crawls URL
- Site crawler → Target website: fetches HTML
- Site crawler → Agent orchestration: returns metadata
- Agent orchestration → AI analysis: requests analysis
- AI analysis → Groq LLM API: sends prompt
- Groq LLM API → AI analysis: returns completion
- AI analysis → Agent orchestration: returns assessment
- Agent orchestration → Scan API: returns report
- Scan API → Scan and results UI: returns JSON
- Scan and results UI → Site owner: shows findings
