# mohamedshaheem002-arch/skyguard-ai architecture

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

- Interactive diagram: https://gitdiagram.com/mohamedshaheem002-arch/skyguard-ai
- Repository: https://github.com/mohamedshaheem002-arch/skyguard-ai

## Overview

SkyGuard is a weather-station telemetry quality-monitoring application. Users inspect network health and alerts, drill into station histories, or submit observation files for scoring and download the results. The scoring engine prepares observations, combines hard quality checks with temporal, climatological and spatial evidence, then assigns a verdict and correction estimate. The dashboard also exposes live-map, test-replay and benchmark views. Backend wiring is only partly sampled; the graph shows documented API and engine responsibilities and omits uncertain internal calls.

Main entry points: [`skyguard/frontend/src/App.tsx`](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/App.tsx) (Dashboard app), [`skyguard/skyguard/engine.py`](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/engine.py) (Scoring engine), [`skyguard/app/main.py`](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/app/main.py) (REST API), [`skyguard/frontend/src/services/api.ts`](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/services/api.ts) (API client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Dashboard"]
  node_app["Dashboard app<br/>[App.tsx]"]
  node_api_client["API client<br/>[api.ts]"]
  node_network_views["Network views<br/>[OverviewView.tsx]"]
  node_map_view["Live map<br/>[LiveMapView.tsx]"]
  node_alerts_view["Alerts view<br/>[AlertsView.tsx]"]
  node_station_view["Station detail"]
  node_replay_view["Test replay<br/>[TestReplayView.tsx]"]
  node_benchmark_view["Benchmarks<br/>[BenchmarksView.tsx]"]
  node_diagnosis_ui["Diagnosis display<br/>[DiagnosisPanel.tsx]"]
end

subgraph group_api["Web API"]
  node_api_server["REST API<br/>[main.py]"]
  node_upload_store[("Scored sessions<br/>[main.py]")]
end

subgraph group_scoring["Scoring"]
  node_engine["Scoring engine<br/>[engine.py]"]
  node_data_prep["Data preparation<br/>[data.py]"]
  node_quality_checks["Quality checks<br/>[qc.py]"]
  node_features["Feature extraction<br/>[features.py]"]
end

subgraph group_analysis["Evidence and decisions"]
  node_climatology["Climatology<br/>[climatology.py]"]
  node_spatial["Spatial context<br/>[spatial.py]"]
  node_decision["Verdicts and correction<br/>[decision.py]"]
  node_models["Physical checks<br/>[physics.py]"]
end

node_operator(("Operator"))

node_operator -->|"uses"| node_app
node_app -->|"requests data"| node_api_client
node_app -->|"renders"| node_network_views
node_app -->|"renders"| node_map_view
node_app -->|"renders"| node_alerts_view
node_app -->|"renders"| node_station_view
node_app -->|"renders"| node_replay_view
node_app -->|"renders"| node_benchmark_view
node_station_view -->|"shows diagnosis"| node_diagnosis_ui
node_api_client -->|"HTTP requests"| node_api_server
node_api_server -->|"scores observations"| node_engine
node_api_server -->|"stores scored results"| node_upload_store
node_api_server -->|"reads download results"| node_upload_store
node_engine -->|"prepares observations"| node_data_prep
node_engine -->|"checks observations"| node_quality_checks
node_engine -->|"extracts features"| node_features
node_engine -->|"uses normals"| node_climatology
node_engine -->|"uses neighbours"| node_spatial
node_engine -->|"assigns verdicts"| node_decision
node_engine -->|"uses physical checks"| node_models

click node_app "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/App.tsx"
click node_api_client "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/services/api.ts"
click node_network_views "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/OverviewView.tsx"
click node_map_view "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/LiveMapView.tsx"
click node_alerts_view "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/AlertsView.tsx"
click node_station_view "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/StationDetailView.tsx"
click node_replay_view "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/TestReplayView.tsx"
click node_benchmark_view "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/BenchmarksView.tsx"
click node_diagnosis_ui "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/common/DiagnosisPanel.tsx"
click node_api_server "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/app/main.py"
click node_upload_store "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/app/main.py"
click node_engine "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/engine.py"
click node_data_prep "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/data.py"
click node_quality_checks "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/qc.py"
click node_features "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/features.py"
click node_climatology "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/climatology.py"
click node_spatial "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/spatial.py"
click node_decision "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/decision.py"
click node_models "https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/physics.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_app,node_api_client,node_network_views,node_map_view,node_alerts_view,node_station_view,node_replay_view,node_benchmark_view,node_diagnosis_ui toneBlue
class node_api_server,node_upload_store toneAmber
class node_engine,node_data_prep,node_quality_checks,node_features toneMint
class node_climatology,node_spatial,node_decision,node_models toneRose
class node_operator toneIndigo
```

## Components

### Dashboard

- [Dashboard app](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/App.tsx): `skyguard/frontend/src/App.tsx`
- [API client](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/services/api.ts): `skyguard/frontend/src/services/api.ts`
- [Network views](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/OverviewView.tsx): `skyguard/frontend/src/components/views/OverviewView.tsx`
- [Live map](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/LiveMapView.tsx): `skyguard/frontend/src/components/views/LiveMapView.tsx`
- [Alerts view](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/AlertsView.tsx): `skyguard/frontend/src/components/views/AlertsView.tsx`
- [Station detail](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/StationDetailView.tsx): `skyguard/frontend/src/components/views/StationDetailView.tsx`
- [Test replay](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/TestReplayView.tsx): `skyguard/frontend/src/components/views/TestReplayView.tsx`
- [Benchmarks](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/views/BenchmarksView.tsx): `skyguard/frontend/src/components/views/BenchmarksView.tsx`
- [Diagnosis display](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/frontend/src/components/common/DiagnosisPanel.tsx): `skyguard/frontend/src/components/common/DiagnosisPanel.tsx`

### Web API

- [REST API](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/app/main.py): `skyguard/app/main.py`
- [Scored sessions](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/app/main.py): `skyguard/app/main.py`

### Scoring

- [Scoring engine](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/engine.py): `skyguard/skyguard/engine.py`
- [Data preparation](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/data.py): `skyguard/skyguard/data.py`
- [Quality checks](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/qc.py): `skyguard/skyguard/qc.py`
- [Feature extraction](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/features.py): `skyguard/skyguard/features.py`

### Evidence and decisions

- [Climatology](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/climatology.py): `skyguard/skyguard/climatology.py`
- [Spatial context](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/spatial.py): `skyguard/skyguard/spatial.py`
- [Verdicts and correction](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/decision.py): `skyguard/skyguard/decision.py`
- [Physical checks](https://github.com/mohamedshaheem002-arch/skyguard-ai/blob/main/skyguard/skyguard/physics.py): `skyguard/skyguard/physics.py`

### Other components

- **Operator**

## Connections

- Operator → Dashboard app: uses
- Dashboard app → API client: requests data
- Dashboard app → Network views: renders
- Dashboard app → Live map: renders
- Dashboard app → Alerts view: renders
- Dashboard app → Station detail: renders
- Dashboard app → Test replay: renders
- Dashboard app → Benchmarks: renders
- Station detail → Diagnosis display: shows diagnosis
- API client → REST API: HTTP requests
- REST API → Scoring engine: scores observations
- REST API → Scored sessions: stores scored results
- REST API → Scored sessions: reads download results
- Scoring engine → Data preparation: prepares observations
- Scoring engine → Quality checks: checks observations
- Scoring engine → Feature extraction: extracts features
- Scoring engine → Climatology: uses normals
- Scoring engine → Spatial context: uses neighbours
- Scoring engine → Verdicts and correction: assigns verdicts
- Scoring engine → Physical checks: uses physical checks
