# debopam525/sih-2026 architecture

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

## Overview

ECDAT is an enterprise cryptographic discovery and post-quantum migration analysis tool. Users authenticate, submit scans, and follow extracted cryptographic evidence through detection, CBOM correlation, quantum/risk/Mosca assessment, and replacement recommendations; they can then review inventory, manage application context and migration readiness, export reports, and compare rescans. The graph emphasizes documented capabilities and sampled orchestration. Scanner-to-CBOM and report/diff wiring is based on the README; unsampled implementations are represented only by supported directory paths.

Main entry points: [`backend/app/analysis/pipeline.py`](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/pipeline.py) (Analysis pipeline), [`frontend/src/App.tsx`](https://github.com/debopam525/sih-2026/blob/main/frontend/src/App.tsx) (ECDAT dashboard), [`backend/app/models`](https://github.com/debopam525/sih-2026/tree/main/backend/app/models) (Cryptographic domain records), [`backend/app/api/v1/router.py`](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/router.py) (API router)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interface"]
  node_web["ECDAT dashboard<br/>[App.tsx]"]
  node_client["API client<br/>[client.ts]"]
  node_authui["Session state<br/>[auth.tsx]"]
  node_scansui["Scan workspace<br/>[Scans.tsx]"]
  node_reviewui["Inventory and insights<br/>[Assets.tsx]"]
  node_appui["Application context<br/>[Applications.tsx]"]
  node_migrationui["Migration readiness<br/>[Migration.tsx]"]
  node_reportsui["Report exports<br/>[Reports.tsx]"]
end

subgraph group_api["API and orchestration"]
  node_apirouter["API router<br/>[router.py]"]
  node_authapi["Authentication and RBAC<br/>[auth.py]"]
  node_scanapi["Scan endpoints<br/>[scans.py]"]
  node_analysisapi["Assessment endpoints<br/>[analysis_routes.py]"]
  node_appapi["Application endpoints<br/>[applications.py]"]
  node_reportapi["Report endpoints<br/>[reports.py]"]
end

subgraph group_discovery["Discovery and CBOM"]
  node_scanflow["Scan orchestration<br/>[runner.py]"]
  node_scanners["Source and package scanners"]
  node_detection["Detection and normalization"]
  node_cbom["CBOM correlate and export"]
end

subgraph group_analysis["Assessment and migration"]
  node_analysispipe["Analysis pipeline<br/>[pipeline.py]"]
  node_quantum["Quantum vulnerability<br/>[quantum.py]"]
  node_risk["Risk scoring<br/>[risk.py]"]
  node_mosca["Mosca prioritization<br/>[mosca.py]"]
  node_recommend["PQC recommendations<br/>[recommendation.py]"]
  node_migration["Migration status<br/>[migration.py]"]
  node_reportgen["Report generation<br/>[generator.py]"]
end

subgraph group_persistence["Domain state"]
  node_db[("Application database<br/>[db.py]")]
  node_models["Cryptographic domain records"]
  node_settings["Runtime scoring settings"]
end

node_user(("Analyst"))

node_user -->|"uses"| node_web
node_web -->|"requests"| node_client
node_web -->|"checks session"| node_authui
node_web -->|"opens"| node_scansui
node_web -->|"opens"| node_reviewui
node_web -->|"opens"| node_appui
node_web -->|"opens"| node_migrationui
node_web -->|"opens"| node_reportsui
node_client -->|"calls API"| node_apirouter
node_client -->|"logs in"| node_authapi
node_apirouter -->|"dispatches"| node_authapi
node_apirouter -->|"dispatches"| node_scanapi
node_apirouter -->|"dispatches"| node_analysisapi
node_apirouter -->|"dispatches"| node_appapi
node_apirouter -->|"dispatches"| node_reportapi
node_scanapi -->|"starts scans"| node_scanflow
node_scanflow -->|"runs scanners"| node_scanners
node_scanners -->|"detects assets"| node_detection
node_detection -->|"normalizes evidence"| node_cbom
node_cbom -->|"records inventory"| node_models
node_scanapi -->|"triggers assessment"| node_analysispipe
node_analysispipe -->|"assesses"| node_quantum
node_analysispipe -->|"scores"| node_risk
node_analysispipe -->|"prioritizes"| node_mosca
node_analysispipe -->|"recommends"| node_recommend
node_analysispipe -->|"seeds status"| node_migration
node_analysispipe -->|"persists results"| node_models
node_analysispipe -->|"reads assumptions"| node_settings
node_appapi -->|"rescores assets"| node_analysispipe
node_appapi -->|"reads and updates"| node_models
node_analysisapi -->|"reads assessments"| node_models
node_reportapi -->|"generates exports"| node_reportgen
node_reportgen -->|"reads scan data"| node_models
node_scanflow -->|"tracks scan state"| node_models
node_models -->|"stored in"| node_db
node_settings -->|"reads and writes"| node_db

click node_web "https://github.com/debopam525/sih-2026/blob/main/frontend/src/App.tsx"
click node_client "https://github.com/debopam525/sih-2026/blob/main/frontend/src/api/client.ts"
click node_authui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/store/auth.tsx"
click node_scansui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Scans.tsx"
click node_reviewui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Assets.tsx"
click node_appui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Applications.tsx"
click node_migrationui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Migration.tsx"
click node_reportsui "https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Reports.tsx"
click node_apirouter "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/router.py"
click node_authapi "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/auth.py"
click node_scanapi "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/scans.py"
click node_analysisapi "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/analysis_routes.py"
click node_appapi "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/applications.py"
click node_reportapi "https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/reports.py"
click node_scanflow "https://github.com/debopam525/sih-2026/blob/main/backend/app/scanners/runner.py"
click node_scanners "https://github.com/debopam525/sih-2026/tree/main/backend/app/scanners"
click node_detection "https://github.com/debopam525/sih-2026/tree/main/backend/app/detection"
click node_cbom "https://github.com/debopam525/sih-2026/tree/main/backend/app/cbom"
click node_analysispipe "https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/pipeline.py"
click node_quantum "https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/quantum.py"
click node_risk "https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/risk.py"
click node_mosca "https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/mosca.py"
click node_recommend "https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/recommendation.py"
click node_migration "https://github.com/debopam525/sih-2026/blob/main/backend/app/models/migration.py"
click node_reportgen "https://github.com/debopam525/sih-2026/blob/main/backend/app/reports/generator.py"
click node_db "https://github.com/debopam525/sih-2026/blob/main/backend/app/core/db.py"
click node_models "https://github.com/debopam525/sih-2026/tree/main/backend/app/models"
click node_settings "https://github.com/debopam525/sih-2026/blob/main/backend/app/core/runtime_settings.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_web,node_client,node_authui,node_scansui,node_reviewui,node_appui,node_migrationui,node_reportsui toneBlue
class node_apirouter,node_authapi,node_scanapi,node_analysisapi,node_appapi,node_reportapi toneAmber
class node_scanflow,node_scanners,node_detection,node_cbom toneMint
class node_analysispipe,node_quantum,node_risk,node_mosca,node_recommend,node_migration,node_reportgen toneRose
class node_db,node_models,node_settings,node_user toneIndigo
```

## Components

### User interface

- [ECDAT dashboard](https://github.com/debopam525/sih-2026/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [API client](https://github.com/debopam525/sih-2026/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`
- [Session state](https://github.com/debopam525/sih-2026/blob/main/frontend/src/store/auth.tsx): `frontend/src/store/auth.tsx`
- [Scan workspace](https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Scans.tsx): `frontend/src/pages/Scans.tsx`
- [Inventory and insights](https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Assets.tsx): `frontend/src/pages/Assets.tsx`
- [Application context](https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Applications.tsx): `frontend/src/pages/Applications.tsx`
- [Migration readiness](https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Migration.tsx): `frontend/src/pages/Migration.tsx`
- [Report exports](https://github.com/debopam525/sih-2026/blob/main/frontend/src/pages/Reports.tsx): `frontend/src/pages/Reports.tsx`

### API and orchestration

- [API router](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/router.py): `backend/app/api/v1/router.py`
- [Authentication and RBAC](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/auth.py): `backend/app/api/v1/auth.py`
- [Scan endpoints](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/scans.py): `backend/app/api/v1/scans.py`
- [Assessment endpoints](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/analysis_routes.py): `backend/app/api/v1/analysis_routes.py`
- [Application endpoints](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/applications.py): `backend/app/api/v1/applications.py`
- [Report endpoints](https://github.com/debopam525/sih-2026/blob/main/backend/app/api/v1/reports.py): `backend/app/api/v1/reports.py`

### Discovery and CBOM

- [Scan orchestration](https://github.com/debopam525/sih-2026/blob/main/backend/app/scanners/runner.py): `backend/app/scanners/runner.py`
- [Source and package scanners](https://github.com/debopam525/sih-2026/tree/main/backend/app/scanners): `backend/app/scanners`
- [Detection and normalization](https://github.com/debopam525/sih-2026/tree/main/backend/app/detection): `backend/app/detection`
- [CBOM correlate and export](https://github.com/debopam525/sih-2026/tree/main/backend/app/cbom): `backend/app/cbom`

### Assessment and migration

- [Analysis pipeline](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/pipeline.py): `backend/app/analysis/pipeline.py`
- [Quantum vulnerability](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/quantum.py): `backend/app/analysis/quantum.py`
- [Risk scoring](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/risk.py): `backend/app/analysis/risk.py`
- [Mosca prioritization](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/mosca.py): `backend/app/analysis/mosca.py`
- [PQC recommendations](https://github.com/debopam525/sih-2026/blob/main/backend/app/analysis/recommendation.py): `backend/app/analysis/recommendation.py`
- [Migration status](https://github.com/debopam525/sih-2026/blob/main/backend/app/models/migration.py): `backend/app/models/migration.py`
- [Report generation](https://github.com/debopam525/sih-2026/blob/main/backend/app/reports/generator.py): `backend/app/reports/generator.py`

### Domain state

- [Application database](https://github.com/debopam525/sih-2026/blob/main/backend/app/core/db.py): `backend/app/core/db.py`
- [Cryptographic domain records](https://github.com/debopam525/sih-2026/tree/main/backend/app/models): `backend/app/models`
- [Runtime scoring settings](https://github.com/debopam525/sih-2026/blob/main/backend/app/core/runtime_settings.py): `backend/app/core/runtime_settings.py`

### Other components

- **Analyst**

## Connections

- Analyst → ECDAT dashboard: uses
- ECDAT dashboard → API client: requests
- ECDAT dashboard → Session state: checks session
- ECDAT dashboard → Scan workspace: opens
- ECDAT dashboard → Inventory and insights: opens
- ECDAT dashboard → Application context: opens
- ECDAT dashboard → Migration readiness: opens
- ECDAT dashboard → Report exports: opens
- API client → API router: calls API
- API client → Authentication and RBAC: logs in
- API router → Authentication and RBAC: dispatches
- API router → Scan endpoints: dispatches
- API router → Assessment endpoints: dispatches
- API router → Application endpoints: dispatches
- API router → Report endpoints: dispatches
- Scan endpoints → Scan orchestration: starts scans
- Scan orchestration → Source and package scanners: runs scanners
- Source and package scanners → Detection and normalization: detects assets
- Detection and normalization → CBOM correlate and export: normalizes evidence
- CBOM correlate and export → Cryptographic domain records: records inventory
- Scan endpoints → Analysis pipeline: triggers assessment
- Analysis pipeline → Quantum vulnerability: assesses
- Analysis pipeline → Risk scoring: scores
- Analysis pipeline → Mosca prioritization: prioritizes
- Analysis pipeline → PQC recommendations: recommends
- Analysis pipeline → Migration status: seeds status
- Analysis pipeline → Cryptographic domain records: persists results
- Analysis pipeline → Runtime scoring settings: reads assumptions
- Application endpoints → Analysis pipeline: rescores assets
- Application endpoints → Cryptographic domain records: reads and updates
- Assessment endpoints → Cryptographic domain records: reads assessments
- Report endpoints → Report generation: generates exports
- Report generation → Cryptographic domain records: reads scan data
- Scan orchestration → Cryptographic domain records: tracks scan state
- Cryptographic domain records → Application database: stored in
- Runtime scoring settings → Application database: reads and writes
