# idanram30-hub/iso-drawing-checker architecture

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

- Interactive diagram: https://gitdiagram.com/idanram30-hub/iso-drawing-checker
- Repository: https://github.com/idanram30-hub/iso-drawing-checker

## Overview

This Streamlit app lets a user upload a drawing PDF and a CSV of expected tags, then checks required tag fields and presents a table plus a marked-up drawing. The single source file implements the complete workflow; the graph separates its main runtime responsibilities. The README is empty, so capabilities and relationships shown here are based on the excerpted app source only.

Main entry points: [`iso_drawing_checker_app_full.py`](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py) (App workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_input["Inputs"]
  node_upload["Upload controls"]
  node_csv["Tag requirements"]
  node_pdf["PDF drawing"]
end

subgraph group_check["Tag checking"]
  node_workflow["App workflow"]
  node_tagmatch["Tag matching"]
  node_validation["Field validation"]
end

subgraph group_results["Results"]
  node_table["Status table"]
  node_overlay["Drawing overlay"]
end

node_user(("User"))

node_user -->|"uploads files"| node_upload
node_upload -->|"accepts CSV"| node_csv
node_upload -->|"accepts PDF"| node_pdf
node_csv -->|"provides requirements"| node_workflow
node_pdf -->|"provides drawing"| node_workflow
node_workflow -->|"extracts tag data"| node_tagmatch
node_tagmatch -->|"provides found tags"| node_validation
node_workflow -->|"provides requirements"| node_validation
node_validation -->|"displays results"| node_table
node_validation -->|"marks missing fields"| node_overlay
node_workflow -->|"renders PDF page"| node_overlay

click node_upload "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_csv "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_pdf "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_workflow "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_tagmatch "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_validation "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_table "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py"
click node_overlay "https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.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_upload,node_csv,node_pdf,node_user toneBlue
class node_workflow,node_tagmatch,node_validation toneAmber
class node_table,node_overlay toneMint
```

## Components

### Inputs

- [Upload controls](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`
- [Tag requirements](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`
- [PDF drawing](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`

### Tag checking

- [App workflow](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`
- [Tag matching](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`
- [Field validation](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`

### Results

- [Status table](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`
- [Drawing overlay](https://github.com/idanram30-hub/iso-drawing-checker/blob/main/iso_drawing_checker_app_full.py): `iso_drawing_checker_app_full.py`

### Other components

- **User**

## Connections

- User → Upload controls: uploads files (evidence: `iso_drawing_checker_app_full.py`)
- Upload controls → Tag requirements: accepts CSV (evidence: `iso_drawing_checker_app_full.py`)
- Upload controls → PDF drawing: accepts PDF (evidence: `iso_drawing_checker_app_full.py`)
- Tag requirements → App workflow: provides requirements (evidence: `iso_drawing_checker_app_full.py`)
- PDF drawing → App workflow: provides drawing (evidence: `iso_drawing_checker_app_full.py`)
- App workflow → Tag matching: extracts tag data (evidence: `iso_drawing_checker_app_full.py`)
- Tag matching → Field validation: provides found tags (evidence: `iso_drawing_checker_app_full.py`)
- App workflow → Field validation: provides requirements (evidence: `iso_drawing_checker_app_full.py`)
- Field validation → Status table: displays results (evidence: `iso_drawing_checker_app_full.py`)
- Field validation → Drawing overlay: marks missing fields (evidence: `iso_drawing_checker_app_full.py`)
- App workflow → Drawing overlay: renders PDF page (evidence: `iso_drawing_checker_app_full.py`)
