# vinay-kumar0080/docsheildai architecture

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

- Interactive diagram: https://gitdiagram.com/vinay-kumar0080/docsheildai
- Repository: https://github.com/vinay-kumar0080/docsheildai

## Overview

DocShield AI screens identity and travel documents for airport, airline, and immigration staff. The core workflow is capture or upload, per-document quality and AI inspection, cross-document consistency checks, explainable risk scoring, and review of stored results. The backend screening service is the documented orchestrator; the frontend also exposes history, analytics, reports, notifications, settings, and account workflows. The README describes several capabilities whose detailed wiring is not shown in the sampled source, so uncertain links are omitted.

Main entry points: [`backend/app/services/screening_service.py`](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/screening_service.py) (Screening orchestrator), [`frontend/lib/api.ts`](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/lib/api.ts) (API client), [`backend/app/main.py`](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/main.py) (FastAPI application), [`backend/app/db/models.py`](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/db/models.py) (Screening database)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Operator experience"]
  node_screening_ui["Screening capture<br/>[page.tsx]"]
  node_analysis_ui["Analysis results<br/>[page.tsx]"]
  node_result_ui["Screening result<br/>[page.tsx]"]
  node_history_ui["Screening history<br/>[page.tsx]"]
  node_analytics_ui["Analytics dashboard<br/>[page.tsx]"]
  node_reports_ui["Reports view<br/>[page.tsx]"]
  node_notifications_ui["Notifications view<br/>[page.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
end

subgraph group_api["API and workflows"]
  node_app["FastAPI application<br/>[main.py]"]
  node_screening_routes["Screening routes<br/>[screenings.py]"]
  node_analysis_routes["Analysis routes<br/>[analysis.py]"]
  node_analytics_routes["Analytics routes<br/>[analytics.py]"]
  node_report_routes["Report routes<br/>[reports.py]"]
  node_notification_routes["Notification routes<br/>[notifications.py]"]
  node_screening_service["Screening orchestrator"]
  node_storage_service["Upload storage<br/>[storage_service.py]"]
end

subgraph group_inspection["Document inspection"]
  node_quality["Image quality<br/>[image_quality.py]"]
  node_ocr["OCR extraction<br/>[ocr_engine.py]"]
  node_classification["Document classification"]
  node_mrz["MRZ verification<br/>[mrz_engine.py]"]
  node_tampering["Tampering forensics"]
  node_face["Face matching<br/>[face_engine.py]"]
end

subgraph group_assessment["Assessment and output"]
  node_consistency["Consistency checks"]
  node_risk["Explainable risk<br/>[risk_engine.py]"]
  node_report_service["PDF report service<br/>[report_service.py]"]
end

subgraph group_state["Persistence"]
  node_database[("Screening database<br/>[models.py]")]
end

node_operator(("Security operator"))

node_operator -->|"submits documents"| node_screening_ui
node_screening_ui -->|"starts screening"| node_api_client
node_api_client -->|"sends request"| node_screening_routes
node_app -->|"registers router"| node_screening_routes
node_app -->|"registers router"| node_analysis_routes
node_app -->|"registers router"| node_analytics_routes
node_app -->|"registers router"| node_report_routes
node_app -->|"registers router"| node_notification_routes
node_screening_routes -->|"dispatches screening"| node_screening_service
node_screening_service -->|"stores uploads"| node_storage_service
node_screening_service -->|"checks image quality"| node_quality
node_screening_service -->|"extracts fields"| node_ocr
node_screening_service -->|"classifies document"| node_classification
node_screening_service -->|"checks MRZ"| node_mrz
node_screening_service -->|"analyzes tampering"| node_tampering
node_screening_service -->|"checks portrait"| node_face
node_screening_service -->|"checks consistency"| node_consistency
node_screening_service -->|"scores screening"| node_risk
node_screening_service -->|"persists results"| node_database
node_analysis_ui -->|"requests analysis"| node_api_client
node_result_ui -->|"loads result"| node_api_client
node_history_ui -->|"loads history"| node_api_client
node_analytics_ui -->|"requests metrics"| node_api_client
node_reports_ui -->|"requests reports"| node_api_client
node_notifications_ui -->|"loads alerts"| node_api_client
node_api_client -->|"requests analysis"| node_analysis_routes
node_api_client -->|"requests metrics"| node_analytics_routes
node_api_client -->|"requests reports"| node_report_routes
node_api_client -->|"requests alerts"| node_notification_routes
node_report_routes -->|"generates PDF"| node_report_service
node_report_service -->|"reads screening data"| node_database
node_analytics_routes -->|"reads screening records"| node_database
node_notification_routes -->|"reads notifications"| node_database
node_analysis_routes -->|"loads analysis data"| node_database

click node_screening_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/start/%5Bdomain%5D/page.tsx"
click node_analysis_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/%5Bid%5D/analysis/page.tsx"
click node_result_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/%5Bid%5D/result/page.tsx"
click node_history_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/history/page.tsx"
click node_analytics_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/analytics/page.tsx"
click node_reports_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/reports/page.tsx"
click node_notifications_ui "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/notifications/page.tsx"
click node_api_client "https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/lib/api.ts"
click node_app "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/main.py"
click node_screening_routes "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/screenings.py"
click node_analysis_routes "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/analysis.py"
click node_analytics_routes "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/analytics.py"
click node_report_routes "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/reports.py"
click node_notification_routes "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/notifications.py"
click node_screening_service "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/screening_service.py"
click node_storage_service "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/storage_service.py"
click node_quality "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/quality/image_quality.py"
click node_ocr "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/ocr/ocr_engine.py"
click node_classification "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/classification/document_classifier.py"
click node_mrz "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/mrz/mrz_engine.py"
click node_tampering "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/tampering/tampering_engine.py"
click node_face "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/face/face_engine.py"
click node_consistency "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/consistency/consistency_engine.py"
click node_risk "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/risk/risk_engine.py"
click node_report_service "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/report_service.py"
click node_database "https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/db/models.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_screening_ui,node_analysis_ui,node_result_ui,node_history_ui,node_analytics_ui,node_reports_ui,node_notifications_ui,node_api_client toneBlue
class node_app,node_screening_routes,node_analysis_routes,node_analytics_routes,node_report_routes,node_notification_routes,node_screening_service,node_storage_service toneAmber
class node_quality,node_ocr,node_classification,node_mrz,node_tampering,node_face toneMint
class node_consistency,node_risk,node_report_service toneRose
class node_database,node_operator toneIndigo
```

## Components

### Operator experience

- [Screening capture](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/start/%5Bdomain%5D/page.tsx): `frontend/app/screening/start/[domain]/page.tsx`
- [Analysis results](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/%5Bid%5D/analysis/page.tsx): `frontend/app/screening/[id]/analysis/page.tsx`
- [Screening result](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/screening/%5Bid%5D/result/page.tsx): `frontend/app/screening/[id]/result/page.tsx`
- [Screening history](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/history/page.tsx): `frontend/app/history/page.tsx`
- [Analytics dashboard](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/analytics/page.tsx): `frontend/app/analytics/page.tsx`
- [Reports view](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/reports/page.tsx): `frontend/app/reports/page.tsx`
- [Notifications view](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/app/notifications/page.tsx): `frontend/app/notifications/page.tsx`
- [API client](https://github.com/vinay-kumar0080/docsheildai/blob/main/frontend/lib/api.ts): `frontend/lib/api.ts`

### API and workflows

- [FastAPI application](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/main.py): `backend/app/main.py`
- [Screening routes](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/screenings.py): `backend/app/api/routes/screenings.py`
- [Analysis routes](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/analysis.py): `backend/app/api/routes/analysis.py`
- [Analytics routes](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/analytics.py): `backend/app/api/routes/analytics.py`
- [Report routes](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/reports.py): `backend/app/api/routes/reports.py`
- [Notification routes](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/api/routes/notifications.py): `backend/app/api/routes/notifications.py`
- [Screening orchestrator](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/screening_service.py): `backend/app/services/screening_service.py`
- [Upload storage](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/storage_service.py): `backend/app/services/storage_service.py`

### Document inspection

- [Image quality](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/quality/image_quality.py): `backend/app/ai/quality/image_quality.py`
- [OCR extraction](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/ocr/ocr_engine.py): `backend/app/ai/ocr/ocr_engine.py`
- [Document classification](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/classification/document_classifier.py): `backend/app/ai/classification/document_classifier.py`
- [MRZ verification](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/mrz/mrz_engine.py): `backend/app/ai/mrz/mrz_engine.py`
- [Tampering forensics](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/tampering/tampering_engine.py): `backend/app/ai/tampering/tampering_engine.py`
- [Face matching](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/face/face_engine.py): `backend/app/ai/face/face_engine.py`

### Assessment and output

- [Consistency checks](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/consistency/consistency_engine.py): `backend/app/ai/consistency/consistency_engine.py`
- [Explainable risk](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/ai/risk/risk_engine.py): `backend/app/ai/risk/risk_engine.py`
- [PDF report service](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/services/report_service.py): `backend/app/services/report_service.py`

### Persistence

- [Screening database](https://github.com/vinay-kumar0080/docsheildai/blob/main/backend/app/db/models.py): `backend/app/db/models.py`

### Other components

- **Security operator**

## Connections

- Security operator → Screening capture: submits documents
- Screening capture → API client: starts screening
- API client → Screening routes: sends request
- FastAPI application → Screening routes: registers router
- FastAPI application → Analysis routes: registers router
- FastAPI application → Analytics routes: registers router
- FastAPI application → Report routes: registers router
- FastAPI application → Notification routes: registers router
- Screening routes → Screening orchestrator: dispatches screening
- Screening orchestrator → Upload storage: stores uploads
- Screening orchestrator → Image quality: checks image quality
- Screening orchestrator → OCR extraction: extracts fields
- Screening orchestrator → Document classification: classifies document
- Screening orchestrator → MRZ verification: checks MRZ
- Screening orchestrator → Tampering forensics: analyzes tampering
- Screening orchestrator → Face matching: checks portrait
- Screening orchestrator → Consistency checks: checks consistency
- Screening orchestrator → Explainable risk: scores screening
- Screening orchestrator → Screening database: persists results
- Analysis results → API client: requests analysis
- Screening result → API client: loads result
- Screening history → API client: loads history
- Analytics dashboard → API client: requests metrics
- Reports view → API client: requests reports
- Notifications view → API client: loads alerts
- API client → Analysis routes: requests analysis
- API client → Analytics routes: requests metrics
- API client → Report routes: requests reports
- API client → Notification routes: requests alerts
- Report routes → PDF report service: generates PDF
- PDF report service → Screening database: reads screening data
- Analytics routes → Screening database: reads screening records
- Notification routes → Screening database: reads notifications
- Analysis routes → Screening database: loads analysis data
