# maheesh09/archguard architecture

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

- Interactive diagram: https://gitdiagram.com/maheesh09/archguard
- Repository: https://github.com/maheesh09/archguard

## Overview

Archguard accepts analysis-job requests, queues them for asynchronous processing, parses a Python file, checks view-layer imports against an architectural rule, and stores job status and violations. The sampled worker uses a fixed test-file path and does not show repository cloning or a results-query endpoint, so the graph does not imply either capability. The source supports the queue, persistence, sidecar, and rule-evaluation connections shown; no README was provided.

Main entry points: [`src/main/java/com/archguard/JobWorker.java`](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/JobWorker.java) (Job worker), [`src/main/java/com/archguard/AnalysisController.java`](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/AnalysisController.java) (Job API), [`sidecars/python/parser.py`](https://github.com/maheesh09/archguard/blob/main/sidecars/python/parser.py) (Python parser), [`src/main/java/com/archguard/SidecarExecutor.java`](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/SidecarExecutor.java) (Sidecar executor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_intake["Job intake"]
  node_controller["Job API"]
  node_queue_config["Queue config"]
end

subgraph group_analysis["Analysis"]
  node_worker["Job worker<br/>[JobWorker.java]"]
  node_executor["Sidecar executor"]
  node_parser["Python parser<br/>[parser.py]"]
  node_rules["Boundary rules<br/>[RuleEngine.java]"]
end

subgraph group_persistence["Persistence"]
  node_job_repo["Job repository"]
  node_violation_repo["Violation repository"]
end

node_client(("API client"))
node_rabbitmq["RabbitMQ"]
node_input_file["Target Python file"]
node_postgres[("PostgreSQL")]

node_client -->|"submits job"| node_controller
node_controller -->|"saves job"| node_job_repo
node_controller -->|"publishes job ID"| node_rabbitmq
node_queue_config -->|"declares queue"| node_rabbitmq
node_rabbitmq -->|"dispatches job ID"| node_worker
node_worker -->|"loads and updates"| node_job_repo
node_worker -->|"requests parsing"| node_executor
node_executor -->|"runs script"| node_parser
node_parser -->|"reads source"| node_input_file
node_parser -->|"returns AST JSON"| node_executor
node_worker -->|"evaluates AST"| node_rules
node_worker -->|"saves violations"| node_violation_repo
node_job_repo -->|"reads and writes jobs"| node_postgres
node_violation_repo -->|"writes violations"| node_postgres

click node_controller "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/AnalysisController.java"
click node_queue_config "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/RabbitMQConfig.java"
click node_worker "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/JobWorker.java"
click node_executor "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/SidecarExecutor.java"
click node_parser "https://github.com/maheesh09/archguard/blob/main/sidecars/python/parser.py"
click node_rules "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/RuleEngine.java"
click node_job_repo "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/repositories/AnalysisJobRepository.java"
click node_violation_repo "https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/repositories/ViolationRepository.java"

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_controller,node_queue_config,node_client toneBlue
class node_worker,node_executor,node_parser,node_rules,node_postgres toneAmber
class node_job_repo,node_violation_repo toneMint
class node_rabbitmq,node_input_file toneIndigo
```

## Components

### Job intake

- [Job API](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/AnalysisController.java): `src/main/java/com/archguard/AnalysisController.java`
- [Queue config](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/RabbitMQConfig.java): `src/main/java/com/archguard/RabbitMQConfig.java`

### Analysis

- [Job worker](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/JobWorker.java): `src/main/java/com/archguard/JobWorker.java`
- [Sidecar executor](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/SidecarExecutor.java): `src/main/java/com/archguard/SidecarExecutor.java`
- [Python parser](https://github.com/maheesh09/archguard/blob/main/sidecars/python/parser.py): `sidecars/python/parser.py`
- [Boundary rules](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/RuleEngine.java): `src/main/java/com/archguard/RuleEngine.java`

### Persistence

- [Job repository](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/repositories/AnalysisJobRepository.java): `src/main/java/com/archguard/repositories/AnalysisJobRepository.java`
- [Violation repository](https://github.com/maheesh09/archguard/blob/main/src/main/java/com/archguard/repositories/ViolationRepository.java): `src/main/java/com/archguard/repositories/ViolationRepository.java`

### Other components

- **API client**
- **RabbitMQ**
- **Target Python file**
- **PostgreSQL**

## Connections

- API client → Job API: submits job
- Job API → Job repository: saves job
- Job API → RabbitMQ: publishes job ID
- Queue config → RabbitMQ: declares queue
- RabbitMQ → Job worker: dispatches job ID
- Job worker → Job repository: loads and updates
- Job worker → Sidecar executor: requests parsing
- Sidecar executor → Python parser: runs script
- Python parser → Target Python file: reads source
- Python parser → Sidecar executor: returns AST JSON
- Job worker → Boundary rules: evaluates AST
- Job worker → Violation repository: saves violations
- Job repository → PostgreSQL: reads and writes jobs
- Violation repository → PostgreSQL: writes violations
