# rubencodeforges/ardudeck architecture

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

- Interactive diagram: https://gitdiagram.com/rubencodeforges/ardudeck
- Repository: https://github.com/rubencodeforges/ardudeck

## Overview

ArduDeck is an Electron ground-control station for ArduPilot, Betaflight, and iNav. Its principal workflow is connecting to vehicles, configuring and calibrating them, planning missions or surveys, operating single vehicles or fleets, then retrieving and analyzing flight logs. The graph retains major documented capabilities, including video, RTK corrections, simulation, companion management, and extensible modules. Most feature-to-feature links are documented product workflow rather than inspected call chains; the source excerpts show internal details only for media handling and simulation.

Main entry points: [`apps/desktop/src/renderer/components/layout/AppShell.tsx`](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/components/layout/AppShell.tsx) (Telemetry dashboard), [`apps/desktop/src/renderer/App.tsx`](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/App.tsx) (Ground station UI), [`apps/desktop/src/main/connection`](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/connection) (Vehicle connections), [`apps/desktop/src/main/media/media-engine.ts`](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/media/media-engine.ts) (Camera and video)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_operations["Flight operations"]
  node_connection["Vehicle connections"]
  node_telemetry["Telemetry dashboard<br/>[AppShell.tsx]"]
  node_fleet["Fleet operations"]
  node_calibration["Vehicle calibration"]
  node_firmware["Firmware flashing"]
  node_video["Camera and video<br/>[media-engine.ts]"]
  node_mediahub["MediaMTX hub"]
  node_wfb["WFB receiver<br/>[main.cpp]"]
end

subgraph group_planning["Mission planning"]
  node_mission["Mission planning"]
  node_survey["Survey planning"]
  node_gis["GIS area import"]
  node_library["Mission library"]
end

subgraph group_analysis["Analysis and extensions"]
  node_logs["Flight log analysis"]
  node_safety["Safety monitor<br/>[engine.ts]"]
  node_simulator["Simulation engine<br/>[main.ts]"]
  node_simprocess["Desktop simulator process"]
end

subgraph group_integration["Vehicle integrations"]
  node_ntrip["RTK corrections<br/>[ntrip-client.ts]"]
  node_traffic["Air traffic overlays<br/>[traffic-service.ts]"]
  node_overlays["Map overlays"]
  node_companion["Companion management"]
  node_modules["Extension modules<br/>[module-manager.ts]"]
end

subgraph group_runtime["Desktop runtime"]
  node_app["Ground station UI<br/>[App.tsx]"]
  node_ipc["Desktop IPC<br/>[ipc-channels.ts]"]
end

node_operator(("Operator"))

node_operator -->|"uses"| node_app
node_app -.->|"requests actions"| node_ipc
node_ipc -.->|"dispatches"| node_connection
node_connection -->|"provides vehicle data"| node_telemetry
node_telemetry -->|"configures vehicle"| node_calibration
node_telemetry -->|"commands flight"| node_mission
node_telemetry -->|"operates vehicles"| node_fleet
node_operator -->|"flashes firmware"| node_firmware
node_operator -->|"views video"| node_video
node_video -->|"ingests camera streams"| node_mediahub
node_wfb -->|"sends RTP video"| node_video
node_operator -->|"plans surveys"| node_survey
node_survey -->|"creates flight plans"| node_mission
node_operator -->|"imports boundaries"| node_gis
node_operator -->|"manages missions"| node_library
node_connection -->|"streams corrections"| node_ntrip
node_app -->|"shows traffic"| node_traffic
node_app -->|"shows overlays"| node_overlays
node_operator -->|"analyzes flights"| node_logs
node_logs -.->|"evaluates flight state"| node_safety
node_operator -->|"manages companion"| node_companion
node_operator -->|"uses extensions"| node_modules
node_operator -->|"starts simulation"| node_simprocess
node_simprocess -.->|"launches"| node_simulator

click node_app "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/App.tsx"
click node_ipc "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/shared/ipc-channels.ts"
click node_connection "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/connection"
click node_telemetry "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/components/layout/AppShell.tsx"
click node_fleet "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/fleet"
click node_calibration "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/calibration"
click node_firmware "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/firmware"
click node_video "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/media/media-engine.ts"
click node_wfb "https://github.com/rubencodeforges/ardudeck/blob/master/tools/wfb-rx/src/main.cpp"
click node_mission "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/map"
click node_survey "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/survey"
click node_gis "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/gis/shapefile-to-geojson.ts"
click node_library "https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/mission-library"
click node_ntrip "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/ntrip/ntrip-client.ts"
click node_traffic "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/traffic/traffic-service.ts"
click node_overlays "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/overlays/overlay-ipc-handlers.ts"
click node_logs "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/logs/fleet-log-history.ts"
click node_safety "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/shared/safety-monitor/engine.ts"
click node_companion "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/companion/companion-connection.ts"
click node_modules "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/modules/module-manager.ts"
click node_simulator "https://github.com/rubencodeforges/ardudeck/blob/master/apps/sim-engine/src/main.ts"
click node_simprocess "https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/sim/sim-engine-process.ts"

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_connection,node_telemetry,node_fleet,node_calibration,node_firmware,node_video,node_mediahub,node_wfb toneBlue
class node_mission,node_survey,node_gis,node_library toneAmber
class node_logs,node_safety,node_simulator,node_simprocess toneMint
class node_ntrip,node_traffic,node_overlays,node_companion,node_modules toneRose
class node_app,node_ipc,node_operator toneIndigo
```

## Components

### Flight operations

- [Vehicle connections](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/connection): `apps/desktop/src/main/connection`
- [Telemetry dashboard](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/components/layout/AppShell.tsx): `apps/desktop/src/renderer/components/layout/AppShell.tsx`
- [Fleet operations](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/fleet): `apps/desktop/src/renderer/components/fleet`
- [Vehicle calibration](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/calibration): `apps/desktop/src/main/calibration`
- [Firmware flashing](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/firmware): `apps/desktop/src/main/firmware`
- [Camera and video](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/media/media-engine.ts): `apps/desktop/src/main/media/media-engine.ts`
- **MediaMTX hub**
- [WFB receiver](https://github.com/rubencodeforges/ardudeck/blob/master/tools/wfb-rx/src/main.cpp): `tools/wfb-rx/src/main.cpp`

### Mission planning

- [Mission planning](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/map): `apps/desktop/src/renderer/components/map`
- [Survey planning](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/renderer/components/survey): `apps/desktop/src/renderer/components/survey`
- [GIS area import](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/gis/shapefile-to-geojson.ts): `apps/desktop/src/main/gis/shapefile-to-geojson.ts`
- [Mission library](https://github.com/rubencodeforges/ardudeck/tree/master/apps/desktop/src/main/mission-library): `apps/desktop/src/main/mission-library`

### Analysis and extensions

- [Flight log analysis](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/logs/fleet-log-history.ts): `apps/desktop/src/main/logs/fleet-log-history.ts`
- [Safety monitor](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/shared/safety-monitor/engine.ts): `apps/desktop/src/shared/safety-monitor/engine.ts`
- [Simulation engine](https://github.com/rubencodeforges/ardudeck/blob/master/apps/sim-engine/src/main.ts): `apps/sim-engine/src/main.ts`
- [Desktop simulator process](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/sim/sim-engine-process.ts): `apps/desktop/src/main/sim/sim-engine-process.ts`

### Vehicle integrations

- [RTK corrections](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/ntrip/ntrip-client.ts): `apps/desktop/src/main/ntrip/ntrip-client.ts`
- [Air traffic overlays](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/traffic/traffic-service.ts): `apps/desktop/src/main/traffic/traffic-service.ts`
- [Map overlays](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/overlays/overlay-ipc-handlers.ts): `apps/desktop/src/main/overlays/overlay-ipc-handlers.ts`
- [Companion management](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/companion/companion-connection.ts): `apps/desktop/src/main/companion/companion-connection.ts`
- [Extension modules](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/main/modules/module-manager.ts): `apps/desktop/src/main/modules/module-manager.ts`

### Desktop runtime

- [Ground station UI](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/renderer/App.tsx): `apps/desktop/src/renderer/App.tsx`
- [Desktop IPC](https://github.com/rubencodeforges/ardudeck/blob/master/apps/desktop/src/shared/ipc-channels.ts): `apps/desktop/src/shared/ipc-channels.ts`

### Other components

- **Operator**

## Connections

- Operator → Ground station UI: uses (evidence: `README.md`)
- Ground station UI → Desktop IPC: requests actions
- Desktop IPC → Vehicle connections: dispatches
- Vehicle connections → Telemetry dashboard: provides vehicle data (evidence: `README.md`)
- Telemetry dashboard → Vehicle calibration: configures vehicle (evidence: `README.md`)
- Telemetry dashboard → Mission planning: commands flight (evidence: `README.md`)
- Telemetry dashboard → Fleet operations: operates vehicles (evidence: `README.md`)
- Operator → Firmware flashing: flashes firmware (evidence: `README.md`)
- Operator → Camera and video: views video (evidence: `README.md`)
- Camera and video → MediaMTX hub: ingests camera streams (evidence: `apps/desktop/src/main/media/media-engine.ts`)
- WFB receiver → Camera and video: sends RTP video (evidence: `tools/wfb-rx/src/main.cpp`)
- Operator → Survey planning: plans surveys (evidence: `README.md`)
- Survey planning → Mission planning: creates flight plans (evidence: `README.md`)
- Operator → GIS area import: imports boundaries (evidence: `README.md`)
- Operator → Mission library: manages missions (evidence: `README.md`)
- Vehicle connections → RTK corrections: streams corrections (evidence: `README.md`)
- Ground station UI → Air traffic overlays: shows traffic (evidence: `README.md`)
- Ground station UI → Map overlays: shows overlays (evidence: `README.md`)
- Operator → Flight log analysis: analyzes flights (evidence: `README.md`)
- Flight log analysis → Safety monitor: evaluates flight state
- Operator → Companion management: manages companion (evidence: `README.md`)
- Operator → Extension modules: uses extensions (evidence: `README.md`)
- Operator → Desktop simulator process: starts simulation (evidence: `README.md`)
- Desktop simulator process → Simulation engine: launches
