# adhavan07/qc-assistance architecture

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

- Interactive diagram: https://gitdiagram.com/adhavan07/qc-assistance
- Repository: https://github.com/adhavan07/qc-assistance

## Overview

This is a wiring-diagram quality-control application: users upload engineering documents, receive standards-based findings, and inspect results in a dashboard and drawing viewer. The backend includes document and organization APIs, queued QC runs, image/document processing, deterministic rules, AI-assisted analysis, and report generation; the frontend also exposes standards and audit views. The README is empty, and several API and processing modules were not excerpted, so those capabilities are represented from the file tree and index without asserting unshown runtime links. The frontend-to-backend connection is therefore left unverified.

Main entry points: [`frontend/src/app/page.tsx`](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/app/page.tsx) (Workspace navigation), [`backend/src/services/qc_pipeline.py`](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/qc_pipeline.py) (QC state pipeline), [`backend/src/api/main.py`](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/main.py) (API application), [`backend/src/api/deps.py`](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/deps.py) (API dependencies)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User workspace"]
  node_workspace["Workspace navigation<br/>[page.tsx]"]
  node_dashboard["QC dashboard<br/>[DashboardView.tsx]"]
  node_upload_view["Document upload<br/>[UploadView.tsx]"]
  node_viewer["Finding inspector"]
  node_standards_view["Standards view<br/>[StandardsView.tsx]"]
  node_audit_view["Audit log view<br/>[AuditLogView.tsx]"]
  node_auth_ui["Authentication UI<br/>[AuthModal.tsx]"]
  node_auth_context["Session state<br/>[auth-context.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
  node_mock_data["Demo data<br/>[mockData.ts]"]
end

subgraph group_api["Backend API"]
  node_api_app["API application<br/>[main.py]"]
  node_document_routes["Document routes<br/>[documents.py]"]
  node_auth_routes["Authentication routes<br/>[auth.py]"]
  node_organization_routes["Organization routes<br/>[organizations.py]"]
  node_run_routes["QC run routes<br/>[qc_runs.py]"]
  node_api_dependencies["API dependencies<br/>[deps.py]"]
  node_auth_dependencies["Auth dependencies<br/>[deps_auth.py]"]
end

subgraph group_processing["QC processing"]
  node_document_processing["Document processing"]
  node_image_processing["Image processing<br/>[image_processor.py]"]
  node_qc_pipeline["QC state pipeline<br/>[qc_pipeline.py]"]
  node_qc_worker["QC worker<br/>[qc_worker.py]"]
  node_pdf_report["PDF report<br/>[pdf_generator.py]"]
end

subgraph group_analysis["Analysis engine"]
  node_extractor["Drawing extractor<br/>[extractor.py]"]
  node_rule_registry["Engineering rules<br/>[rules.py]"]
  node_ai_service["AI analysis service<br/>[service.py]"]
  node_prompt_manager["Prompt governance<br/>[prompt_manager.py]"]
  node_llm_adapter{{"LLM providers<br/>[llm_adapter.py]"}}
  node_ai_engine["AI QC engine<br/>[engine.py]"]
  node_ai_schemas["QC data schemas<br/>[schemas.py]"]
end

subgraph group_platform["Persistence and services"]
  node_queue["Task queue<br/>[queue.py]"]
  node_database[("Relational database<br/>[database.py]")]
  node_models["Domain records<br/>[models.py]"]
  node_storage[("Document storage<br/>[storage.py]")]
end

node_engineer(("Engineer"))

node_engineer -->|"uses"| node_workspace
node_workspace -->|"shows"| node_dashboard
node_workspace -->|"shows"| node_upload_view
node_workspace -->|"shows"| node_viewer
node_workspace -->|"shows"| node_standards_view
node_workspace -->|"shows"| node_audit_view
node_upload_view -->|"opens inspector"| node_workspace
node_dashboard -->|"opens inspector"| node_workspace
node_auth_ui -->|"uses session"| node_auth_context
node_auth_context -->|"calls"| node_api_client
node_auth_context -->|"loads defaults"| node_mock_data
node_upload_view -->|"calls"| node_api_client
node_dashboard -->|"reads"| node_mock_data
node_viewer -->|"reads"| node_mock_data
node_api_client -->|"uses fallback"| node_mock_data
node_api_client -.->|"submits requests"| node_document_routes
node_api_app -->|"configures"| node_api_dependencies
node_api_app -->|"registers routes"| node_document_routes
node_api_app -->|"registers routes"| node_auth_routes
node_api_app -->|"registers routes"| node_organization_routes
node_api_app -->|"registers routes"| node_run_routes
node_auth_routes -->|"uses"| node_auth_dependencies
node_auth_dependencies -->|"uses"| node_api_dependencies
node_api_dependencies -->|"provides sessions"| node_database
node_api_dependencies -->|"provides queue"| node_queue
node_api_dependencies -->|"provides storage"| node_storage
node_qc_worker -->|"consumes jobs"| node_queue
node_qc_worker -->|"runs"| node_qc_pipeline
node_qc_pipeline -->|"processes images"| node_image_processing
node_qc_pipeline -->|"extracts content"| node_extractor
node_qc_pipeline -->|"runs rules"| node_rule_registry
node_qc_pipeline -->|"requests analysis"| node_ai_service
node_qc_pipeline -->|"uses"| node_ai_engine
node_qc_pipeline -->|"persists findings"| node_models
node_ai_engine -->|"extracts"| node_extractor
node_ai_engine -->|"runs rules"| node_rule_registry
node_ai_service -->|"uses provider"| node_llm_adapter
node_ai_service -->|"formats prompts"| node_prompt_manager
node_prompt_manager -->|"formats IDR"| node_ai_schemas
node_llm_adapter -->|"validates output"| node_ai_schemas
node_pdf_report -->|"renders findings"| node_ai_schemas

click node_workspace "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/app/page.tsx"
click node_dashboard "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/DashboardView.tsx"
click node_upload_view "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/UploadView.tsx"
click node_viewer "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/SplitScreenViewer.tsx"
click node_standards_view "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/StandardsView.tsx"
click node_audit_view "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/AuditLogView.tsx"
click node_auth_ui "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/AuthModal.tsx"
click node_auth_context "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/auth-context.tsx"
click node_api_client "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/api.ts"
click node_mock_data "https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/mockData.ts"
click node_api_app "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/main.py"
click node_document_routes "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/documents.py"
click node_auth_routes "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/auth.py"
click node_organization_routes "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/organizations.py"
click node_run_routes "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/qc_runs.py"
click node_api_dependencies "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/deps.py"
click node_auth_dependencies "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/deps_auth.py"
click node_document_processing "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/document_processor.py"
click node_image_processing "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/image_processor.py"
click node_qc_pipeline "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/qc_pipeline.py"
click node_qc_worker "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/qc_worker.py"
click node_queue "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/queue.py"
click node_database "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/database.py"
click node_models "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/models.py"
click node_storage "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/storage.py"
click node_extractor "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/extractor.py"
click node_rule_registry "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/rules.py"
click node_ai_service "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/service.py"
click node_prompt_manager "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/prompt_manager.py"
click node_llm_adapter "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/llm_adapter.py"
click node_ai_engine "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/engine.py"
click node_ai_schemas "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/schemas.py"
click node_pdf_report "https://github.com/adhavan07/qc-assistance/blob/main/backend/src/reports/pdf_generator.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_workspace,node_dashboard,node_upload_view,node_viewer,node_standards_view,node_audit_view,node_auth_ui,node_auth_context,node_api_client,node_mock_data toneBlue
class node_api_app,node_document_routes,node_auth_routes,node_organization_routes,node_run_routes,node_api_dependencies,node_auth_dependencies toneAmber
class node_document_processing,node_image_processing,node_qc_pipeline,node_qc_worker,node_pdf_report toneMint
class node_extractor,node_rule_registry,node_ai_service,node_prompt_manager,node_llm_adapter,node_ai_engine,node_ai_schemas toneRose
class node_queue,node_database,node_models,node_storage,node_engineer toneIndigo
```

## Components

### User workspace

- [Workspace navigation](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/app/page.tsx): `frontend/src/app/page.tsx`
- [QC dashboard](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/DashboardView.tsx): `frontend/src/components/DashboardView.tsx`
- [Document upload](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/UploadView.tsx): `frontend/src/components/UploadView.tsx`
- [Finding inspector](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/SplitScreenViewer.tsx): `frontend/src/components/SplitScreenViewer.tsx`
- [Standards view](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/StandardsView.tsx): `frontend/src/components/StandardsView.tsx`
- [Audit log view](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/AuditLogView.tsx): `frontend/src/components/AuditLogView.tsx`
- [Authentication UI](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/components/AuthModal.tsx): `frontend/src/components/AuthModal.tsx`
- [Session state](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/auth-context.tsx): `frontend/src/lib/auth-context.tsx`
- [API client](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/api.ts): `frontend/src/lib/api.ts`
- [Demo data](https://github.com/adhavan07/qc-assistance/blob/main/frontend/src/lib/mockData.ts): `frontend/src/lib/mockData.ts`

### Backend API

- [API application](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/main.py): `backend/src/api/main.py`
- [Document routes](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/documents.py): `backend/src/api/routers/documents.py`
- [Authentication routes](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/auth.py): `backend/src/api/routers/auth.py`
- [Organization routes](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/organizations.py): `backend/src/api/routers/organizations.py`
- [QC run routes](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/routers/qc_runs.py): `backend/src/api/routers/qc_runs.py`
- [API dependencies](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/deps.py): `backend/src/api/deps.py`
- [Auth dependencies](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/api/deps_auth.py): `backend/src/api/deps_auth.py`

### QC processing

- [Document processing](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/document_processor.py): `backend/src/services/document_processor.py`
- [Image processing](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/image_processor.py): `backend/src/services/image_processor.py`
- [QC state pipeline](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/qc_pipeline.py): `backend/src/services/qc_pipeline.py`
- [QC worker](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/services/qc_worker.py): `backend/src/services/qc_worker.py`
- [PDF report](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/reports/pdf_generator.py): `backend/src/reports/pdf_generator.py`

### Analysis engine

- [Drawing extractor](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/extractor.py): `backend/src/ai/extractor.py`
- [Engineering rules](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/rules.py): `backend/src/ai/rules.py`
- [AI analysis service](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/service.py): `backend/src/ai/service.py`
- [Prompt governance](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/prompt_manager.py): `backend/src/ai/prompt_manager.py`
- [LLM providers](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/llm_adapter.py): `backend/src/ai/llm_adapter.py`
- [AI QC engine](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/engine.py): `backend/src/ai/engine.py`
- [QC data schemas](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/ai/schemas.py): `backend/src/ai/schemas.py`

### Persistence and services

- [Task queue](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/queue.py): `backend/src/infrastructure/queue.py`
- [Relational database](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/database.py): `backend/src/infrastructure/database.py`
- [Domain records](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/models.py): `backend/src/infrastructure/models.py`
- [Document storage](https://github.com/adhavan07/qc-assistance/blob/main/backend/src/infrastructure/storage.py): `backend/src/infrastructure/storage.py`

### Other components

- **Engineer**

## Connections

- Engineer → Workspace navigation: uses (evidence: `frontend/src/app/page.tsx`)
- Workspace navigation → QC dashboard: shows (evidence: `frontend/src/app/page.tsx`)
- Workspace navigation → Document upload: shows (evidence: `frontend/src/app/page.tsx`)
- Workspace navigation → Finding inspector: shows (evidence: `frontend/src/app/page.tsx`)
- Workspace navigation → Standards view: shows (evidence: `frontend/src/app/page.tsx`)
- Workspace navigation → Audit log view: shows (evidence: `frontend/src/app/page.tsx`)
- Document upload → Workspace navigation: opens inspector (evidence: `frontend/src/app/page.tsx`)
- QC dashboard → Workspace navigation: opens inspector (evidence: `frontend/src/app/page.tsx`)
- Authentication UI → Session state: uses session (evidence: `frontend/src/components/AuthModal.tsx`)
- Session state → API client: calls (evidence: `frontend/src/lib/auth-context.tsx`)
- Session state → Demo data: loads defaults (evidence: `frontend/src/lib/auth-context.tsx`)
- Document upload → API client: calls (evidence: `frontend/src/components/UploadView.tsx`)
- QC dashboard → Demo data: reads (evidence: `frontend/src/components/DashboardView.tsx`)
- Finding inspector → Demo data: reads (evidence: `frontend/src/components/SplitScreenViewer.tsx`)
- API client → Demo data: uses fallback (evidence: `frontend/src/lib/api.ts`)
- API client → Document routes: submits requests
- API application → API dependencies: configures (evidence: `backend/src/api/main.py`)
- API application → Document routes: registers routes
- API application → Authentication routes: registers routes
- API application → Organization routes: registers routes
- API application → QC run routes: registers routes
- Authentication routes → Auth dependencies: uses (evidence: `backend/src/api/routers/auth.py`)
- Auth dependencies → API dependencies: uses (evidence: `backend/src/api/deps_auth.py`)
- API dependencies → Relational database: provides sessions (evidence: `backend/src/api/deps.py`)
- API dependencies → Task queue: provides queue (evidence: `backend/src/api/deps.py`)
- API dependencies → Document storage: provides storage (evidence: `backend/src/api/deps.py`)
- QC worker → Task queue: consumes jobs (evidence: `backend/src/services/qc_worker.py`)
- QC worker → QC state pipeline: runs (evidence: `backend/src/services/qc_worker.py`)
- QC state pipeline → Image processing: processes images (evidence: `backend/src/services/qc_pipeline.py`)
- QC state pipeline → Drawing extractor: extracts content (evidence: `backend/src/services/qc_pipeline.py`)
- QC state pipeline → Engineering rules: runs rules (evidence: `backend/src/services/qc_pipeline.py`)
- QC state pipeline → AI analysis service: requests analysis (evidence: `backend/src/services/qc_pipeline.py`)
- QC state pipeline → AI QC engine: uses (evidence: `backend/src/services/qc_pipeline.py`)
- QC state pipeline → Domain records: persists findings (evidence: `backend/src/services/qc_pipeline.py`)
- AI QC engine → Drawing extractor: extracts (evidence: `backend/src/ai/engine.py`)
- AI QC engine → Engineering rules: runs rules (evidence: `backend/src/ai/engine.py`)
- AI analysis service → LLM providers: uses provider (evidence: `backend/src/ai/service.py`)
- AI analysis service → Prompt governance: formats prompts (evidence: `backend/src/ai/service.py`)
- Prompt governance → QC data schemas: formats IDR (evidence: `backend/src/ai/prompt_manager.py`)
- LLM providers → QC data schemas: validates output (evidence: `backend/src/ai/llm_adapter.py`)
- PDF report → QC data schemas: renders findings (evidence: `backend/src/reports/pdf_generator.py`)
