# dynamicarian/promptinjectiongaurdrails3 architecture

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

- Interactive diagram: https://gitdiagram.com/dynamicarian/promptinjectiongaurdrails3
- Repository: https://github.com/dynamicarian/promptinjectiongaurdrails3

## Overview

PromptInjectionGuardrails is a prompt-injection detection application: a user submits a prompt, the backend analyzes and stores it, and the results view retrieves and presents the classification and diagnostics. Separate pages expose dataset/model reporting and advanced Unicode-evasion evaluation. The excerpts establish the frontend routes, API handlers, persistence behavior, and supervised feature extraction; the core orchestrator and several evaluation modules are listed in the source index but were not excerpted, so some internal links remain unverified.

Main entry points: [`backend/core.py`](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/core.py) (Analysis orchestrator), [`frontend/src/pages/security/SecurityResultsPage.jsx`](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/security/SecurityResultsPage.jsx) (Security dashboard), [`frontend/src/App.jsx`](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/App.jsx) (Page routing), [`frontend/src/pages/results/ResultsPage.jsx`](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/ResultsPage.jsx) (Results view)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["User interface"]
  node_routes["Page routing<br/>[App.jsx]"]
  node_home["Prompt entry<br/>[HomePage.jsx]"]
  node_results["Results view<br/>[ResultsPage.jsx]"]
  node_result_parts["Result diagnostics"]
  node_history["Prompt history<br/>[PromptHistory.jsx]"]
  node_data_page["Dataset charts<br/>[OurData.jsx]"]
  node_security_page["Security dashboard"]
  node_client_api["HTTP client<br/>[api.js]"]
end

subgraph group_service["API and persistence"]
  node_api_routes["API endpoints<br/>[connection.py]"]
  node_store[("Results database<br/>[db.py]")]
end

subgraph group_analysis["Prompt analysis"]
  node_orchestrator["Analysis orchestrator<br/>[core.py]"]
  node_unicode["Unicode normalization"]
  node_supervised["Supervised detector<br/>[svm_predict.py]"]
  node_attack_cluster["Attack classification"]
  node_unsupervised["Unsupervised detector"]
end

subgraph group_evaluation["Reporting and evaluation"]
  node_data_report["Data reports<br/>[data_report.py]"]
  node_evasion["Evasion baseline"]
  node_benchmark["Normalization benchmark"]
  node_security_export["Security results export"]
  node_benchmark_export["Benchmark export"]
  node_dataset["Report datasets"]
end

node_user(("Prompt user"))

node_user -.->|"enters prompt"| node_home
node_routes -->|"routes to"| node_home
node_routes -->|"routes to"| node_results
node_routes -->|"routes to"| node_data_page
node_routes -->|"routes to"| node_security_page
node_home -->|"submits via"| node_client_api
node_results -->|"requests results"| node_client_api
node_client_api -.->|"HTTP requests"| node_api_routes
node_api_routes -->|"dispatches analysis"| node_orchestrator
node_orchestrator -->|"uses normalization"| node_unicode
node_orchestrator -->|"uses detector"| node_supervised
node_orchestrator -.->|"uses classifier"| node_attack_cluster
node_orchestrator -.->|"uses detector"| node_unsupervised
node_orchestrator -.->|"persists results"| node_store
node_api_routes -.->|"reads and deletes"| node_store
node_results -->|"renders diagnostics"| node_result_parts
node_results -->|"renders history"| node_history
node_api_routes -->|"requests reports"| node_data_report
node_data_report -->|"uses model"| node_supervised
node_data_page -.->|"loads chart data"| node_client_api
node_security_page -->|"displays evaluation data"| node_dataset
node_benchmark -->|"benchmarks normalization"| node_unicode
node_security_page -.->|"shows evasion evaluation"| node_evasion
node_security_page -.->|"uses exported results"| node_security_export
node_security_page -.->|"uses benchmark output"| node_benchmark_export

click node_routes "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/App.jsx"
click node_home "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/home/HomePage.jsx"
click node_results "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/ResultsPage.jsx"
click node_result_parts "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/components/GuardrailDiagnostics.jsx"
click node_history "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/components/PromptHistory.jsx"
click node_data_page "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/our_data/OurData.jsx"
click node_security_page "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/security/SecurityResultsPage.jsx"
click node_client_api "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/api.js"
click node_api_routes "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/connection.py"
click node_orchestrator "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/core.py"
click node_unicode "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/unicode_normalization.py"
click node_supervised "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/svm_predict.py"
click node_attack_cluster "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/attack_type_kmeans.py"
click node_unsupervised "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/unsupervised_predict.py"
click node_store "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/db.py"
click node_data_report "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/data_report.py"
click node_evasion "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/evasion_baseline.py"
click node_benchmark "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/normalization_benchmark.py"
click node_security_export "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/export_security_results.py"
click node_benchmark_export "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/export_benchmark_results.py"
click node_dataset "https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/security/SecurityResultsPage.jsx"

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_routes,node_home,node_results,node_result_parts,node_history,node_data_page,node_security_page,node_client_api,node_user toneBlue
class node_api_routes,node_store toneAmber
class node_orchestrator,node_unicode,node_supervised,node_attack_cluster,node_unsupervised toneMint
class node_data_report,node_evasion,node_benchmark,node_security_export,node_benchmark_export,node_dataset toneRose
```

## Components

### User interface

- [Page routing](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/App.jsx): `frontend/src/App.jsx`
- [Prompt entry](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/home/HomePage.jsx): `frontend/src/pages/home/HomePage.jsx`
- [Results view](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/ResultsPage.jsx): `frontend/src/pages/results/ResultsPage.jsx`
- [Result diagnostics](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/components/GuardrailDiagnostics.jsx): `frontend/src/pages/results/components/GuardrailDiagnostics.jsx`
- [Prompt history](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/results/components/PromptHistory.jsx): `frontend/src/pages/results/components/PromptHistory.jsx`
- [Dataset charts](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/our_data/OurData.jsx): `frontend/src/pages/our_data/OurData.jsx`
- [Security dashboard](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/security/SecurityResultsPage.jsx): `frontend/src/pages/security/SecurityResultsPage.jsx`
- [HTTP client](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/api.js): `frontend/src/api.js`

### API and persistence

- [API endpoints](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/connection.py): `backend/connection.py`
- [Results database](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/db.py): `backend/db.py`

### Prompt analysis

- [Analysis orchestrator](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/core.py): `backend/core.py`
- [Unicode normalization](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/unicode_normalization.py): `backend/advanced_security/unicode_normalization.py`
- [Supervised detector](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/svm_predict.py): `backend/sub_models/svm_predict.py`
- [Attack classification](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/attack_type_kmeans.py): `backend/sub_models/attack_type_kmeans.py`
- [Unsupervised detector](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/sub_models/unsupervised_predict.py): `backend/sub_models/unsupervised_predict.py`

### Reporting and evaluation

- [Data reports](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/data_report.py): `backend/data_report.py`
- [Evasion baseline](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/evasion_baseline.py): `backend/advanced_security/evasion_baseline.py`
- [Normalization benchmark](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/normalization_benchmark.py): `backend/advanced_security/normalization_benchmark.py`
- [Security results export](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/export_security_results.py): `backend/advanced_security/export_security_results.py`
- [Benchmark export](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/backend/advanced_security/export_benchmark_results.py): `backend/advanced_security/export_benchmark_results.py`
- [Report datasets](https://github.com/dynamicarian/promptinjectiongaurdrails3/blob/main/frontend/src/pages/security/SecurityResultsPage.jsx): `frontend/src/pages/security/SecurityResultsPage.jsx`

### Other components

- **Prompt user**

## Connections

- Prompt user → Prompt entry: enters prompt
- Page routing → Prompt entry: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Results view: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Dataset charts: routes to (evidence: `frontend/src/App.jsx`)
- Page routing → Security dashboard: routes to (evidence: `frontend/src/App.jsx`)
- Prompt entry → HTTP client: submits via (evidence: `frontend/src/pages/home/HomePage.jsx`)
- Results view → HTTP client: requests results (evidence: `frontend/src/pages/results/ResultsPage.jsx`)
- HTTP client → API endpoints: HTTP requests
- API endpoints → Analysis orchestrator: dispatches analysis (evidence: `backend/connection.py`)
- Analysis orchestrator → Unicode normalization: uses normalization (evidence: `backend/core.py`)
- Analysis orchestrator → Supervised detector: uses detector (evidence: `backend/core.py`)
- Analysis orchestrator → Attack classification: uses classifier
- Analysis orchestrator → Unsupervised detector: uses detector
- Analysis orchestrator → Results database: persists results (evidence: `backend/core.py`)
- API endpoints → Results database: reads and deletes
- Results view → Result diagnostics: renders diagnostics (evidence: `frontend/src/pages/results/ResultsPage.jsx`)
- Results view → Prompt history: renders history (evidence: `frontend/src/pages/results/ResultsPage.jsx`)
- API endpoints → Data reports: requests reports (evidence: `backend/connection.py`)
- Data reports → Supervised detector: uses model (evidence: `backend/data_report.py`)
- Dataset charts → HTTP client: loads chart data
- Security dashboard → Report datasets: displays evaluation data (evidence: `frontend/src/pages/security/SecurityResultsPage.jsx`)
- Normalization benchmark → Unicode normalization: benchmarks normalization (evidence: `backend/advanced_security/normalization_benchmark.py`)
- Security dashboard → Evasion baseline: shows evasion evaluation
- Security dashboard → Security results export: uses exported results
- Security dashboard → Benchmark export: uses benchmark output
