# shermr6/aircraft-tracker-desktop architecture

> Architecture diagram of the GitHub repository shermr6/aircraft-tracker-desktop, 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/shermr6/aircraft-tracker-desktop
- Repository: https://github.com/shermr6/aircraft-tracker-desktop

## Overview

AircraftTracker is an Electron/React desktop client for activating a license and then managing monitored aircraft, airport settings, alerts, integrations, and live tracking. The principal workflow runs from activation through authenticated dashboard navigation to configuration and live status; screens make backend requests through a shared API client, while a background poller maintains live positions and trails. Local storage persists credentials and preferences through Electron when available. The README documents webhook integrations and tracking capabilities; unsampled implementation details are represented at subsystem level, and only documented or indexed relationships are shown.

Main entry points: [`src/screens/Dashboard.jsx`](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Dashboard.jsx) (Dashboard navigation), [`src/services/api.js`](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/api.js) (Backend API client), [`src/App.jsx`](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/App.jsx) (App routing), [`src/screens/ActivationScreen.jsx`](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/ActivationScreen.jsx) (License activation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop application"]
  node_app["App routing<br/>[App.jsx]"]
  node_dashboard["Dashboard navigation<br/>[Dashboard.jsx]"]
  node_electron_bridge["Secure IPC bridge<br/>[preload.js]"]
  node_electron_main["Electron lifecycle<br/>[main.js]"]
  node_api["Backend API client<br/>[api.js]"]
end

subgraph group_account["Account and preferences"]
  node_activation["License activation"]
  node_local_store[("Persistent preferences<br/>[storage.js]")]
  node_tier_limits["Plan limits<br/>[tierLimits.js]"]
end

subgraph group_tracking["Tracking configuration"]
  node_aircraft["Aircraft management"]
  node_airport["Airport configuration<br/>[AirportConfig.jsx]"]
  node_saved_locations["Saved locations<br/>[SavedLocations.jsx]"]
  node_alerts["Alert settings<br/>[AlertSettings.jsx]"]
  node_integrations["Webhook integrations<br/>[Integrations.jsx]"]
  node_teams["Team collaboration<br/>[Teams.jsx]"]
end

subgraph group_operations["Live operations"]
  node_dashboard_home["Status overview<br/>[DashboardHome.jsx]"]
  node_live_map["Live aircraft map<br/>[LiveMap.jsx]"]
  node_background_tracker["Position poller"]
  node_logs["Tracking logs<br/>[Logs.jsx]"]
  node_ground_station["Ground station setup"]
  node_tracker_bridge["Tracker process bridge<br/>[tracker_bridge.js]"]
  node_discord_bot["Discord bot"]
end

node_user(("User"))
node_backend["AircraftTracker backend"]

node_user -->|"uses"| node_app
node_app -->|"routes to"| node_activation
node_app -->|"routes to"| node_dashboard
node_activation -->|"authenticates with"| node_api
node_activation -->|"persists credentials"| node_local_store
node_dashboard -->|"reads and writes"| node_local_store
node_local_store -->|"uses IPC"| node_electron_bridge
node_electron_main -->|"configures"| node_electron_bridge
node_electron_main -->|"starts"| node_tracker_bridge
node_api -->|"sends requests"| node_backend
node_dashboard -->|"navigates to"| node_aircraft
node_dashboard -->|"navigates to"| node_airport
node_dashboard -->|"navigates to"| node_alerts
node_dashboard -->|"navigates to"| node_integrations
node_dashboard -->|"navigates to"| node_dashboard_home
node_dashboard -->|"navigates to"| node_live_map
node_dashboard -->|"navigates to"| node_logs
node_dashboard -->|"navigates to"| node_ground_station
node_dashboard -.->|"navigates to"| node_saved_locations
node_dashboard -.->|"navigates to"| node_teams
node_aircraft -->|"manages aircraft via"| node_api
node_aircraft -->|"checks plan limits"| node_tier_limits
node_airport -->|"configures airport via"| node_api
node_saved_locations -->|"loads and saves via"| node_api
node_alerts -->|"configures alerts via"| node_api
node_alerts -->|"checks plan limits"| node_tier_limits
node_integrations -->|"manages webhooks via"| node_api
node_integrations -->|"checks plan limits"| node_tier_limits
node_dashboard_home -->|"loads status via"| node_api
node_live_map -->|"reads positions"| node_background_tracker
node_background_tracker -->|"polls live aircraft"| node_api
node_logs -->|"loads tracking logs"| node_api
node_ground_station -->|"loads station status"| node_api
node_discord_bot -.->|"integrates with"| node_backend

click node_app "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/App.jsx"
click node_activation "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/ActivationScreen.jsx"
click node_dashboard "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Dashboard.jsx"
click node_local_store "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/storage.js"
click node_electron_bridge "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/preload.js"
click node_electron_main "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/main.js"
click node_api "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/api.js"
click node_tier_limits "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/config/tierLimits.js"
click node_aircraft "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AircraftManager.jsx"
click node_airport "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AirportConfig.jsx"
click node_saved_locations "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/SavedLocations.jsx"
click node_alerts "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AlertSettings.jsx"
click node_integrations "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Integrations.jsx"
click node_teams "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Teams.jsx"
click node_dashboard_home "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/DashboardHome.jsx"
click node_live_map "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/LiveMap.jsx"
click node_background_tracker "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/backgroundTracker.js"
click node_logs "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Logs.jsx"
click node_ground_station "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/GroundStationSetup.jsx"
click node_tracker_bridge "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/tracker_bridge.js"
click node_discord_bot "https://github.com/shermr6/aircraft-tracker-desktop/blob/main/tracker/aviation_tracker_discord_bot.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_dashboard,node_electron_bridge,node_electron_main,node_api,node_user toneBlue
class node_activation,node_local_store,node_tier_limits toneAmber
class node_aircraft,node_airport,node_saved_locations,node_alerts,node_integrations,node_teams toneMint
class node_dashboard_home,node_live_map,node_background_tracker,node_logs,node_ground_station,node_tracker_bridge,node_discord_bot toneRose
class node_backend toneIndigo
```

## Components

### Desktop application

- [App routing](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/App.jsx): `src/App.jsx`
- [Dashboard navigation](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Dashboard.jsx): `src/screens/Dashboard.jsx`
- [Secure IPC bridge](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/preload.js): `src/main/preload.js`
- [Electron lifecycle](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/main.js): `src/main/main.js`
- [Backend API client](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/api.js): `src/services/api.js`

### Account and preferences

- [License activation](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/ActivationScreen.jsx): `src/screens/ActivationScreen.jsx`
- [Persistent preferences](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/storage.js): `src/services/storage.js`
- [Plan limits](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/config/tierLimits.js): `src/config/tierLimits.js`

### Tracking configuration

- [Aircraft management](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AircraftManager.jsx): `src/screens/AircraftManager.jsx`
- [Airport configuration](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AirportConfig.jsx): `src/screens/AirportConfig.jsx`
- [Saved locations](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/SavedLocations.jsx): `src/screens/SavedLocations.jsx`
- [Alert settings](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/AlertSettings.jsx): `src/screens/AlertSettings.jsx`
- [Webhook integrations](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Integrations.jsx): `src/screens/Integrations.jsx`
- [Team collaboration](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Teams.jsx): `src/screens/Teams.jsx`

### Live operations

- [Status overview](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/DashboardHome.jsx): `src/screens/DashboardHome.jsx`
- [Live aircraft map](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/LiveMap.jsx): `src/screens/LiveMap.jsx`
- [Position poller](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/services/backgroundTracker.js): `src/services/backgroundTracker.js`
- [Tracking logs](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/Logs.jsx): `src/screens/Logs.jsx`
- [Ground station setup](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/screens/GroundStationSetup.jsx): `src/screens/GroundStationSetup.jsx`
- [Tracker process bridge](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/src/main/tracker_bridge.js): `src/main/tracker_bridge.js`
- [Discord bot](https://github.com/shermr6/aircraft-tracker-desktop/blob/main/tracker/aviation_tracker_discord_bot.py): `tracker/aviation_tracker_discord_bot.py`

### Other components

- **User**
- **AircraftTracker backend**

## Connections

- User → App routing: uses (evidence: `README.md`)
- App routing → License activation: routes to (evidence: `src/App.jsx`)
- App routing → Dashboard navigation: routes to (evidence: `src/App.jsx`)
- License activation → Backend API client: authenticates with (evidence: `src/screens/ActivationScreen.jsx`)
- License activation → Persistent preferences: persists credentials (evidence: `src/screens/ActivationScreen.jsx`)
- Dashboard navigation → Persistent preferences: reads and writes (evidence: `src/screens/Dashboard.jsx`)
- Persistent preferences → Secure IPC bridge: uses IPC (evidence: `src/services/storage.js`)
- Electron lifecycle → Secure IPC bridge: configures (evidence: `README.md`)
- Electron lifecycle → Tracker process bridge: starts (evidence: `src/main/main.js`)
- Backend API client → AircraftTracker backend: sends requests (evidence: `src/services/api.js`)
- Dashboard navigation → Aircraft management: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Airport configuration: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Alert settings: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Webhook integrations: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Status overview: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Live aircraft map: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Tracking logs: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Ground station setup: navigates to (evidence: `src/screens/Dashboard.jsx`)
- Dashboard navigation → Saved locations: navigates to
- Dashboard navigation → Team collaboration: navigates to
- Aircraft management → Backend API client: manages aircraft via (evidence: `src/screens/AircraftManager.jsx`)
- Aircraft management → Plan limits: checks plan limits (evidence: `src/screens/AircraftManager.jsx`)
- Airport configuration → Backend API client: configures airport via (evidence: `src/screens/AirportConfig.jsx`)
- Saved locations → Backend API client: loads and saves via (evidence: `src/screens/SavedLocations.jsx`)
- Alert settings → Backend API client: configures alerts via (evidence: `src/screens/AlertSettings.jsx`)
- Alert settings → Plan limits: checks plan limits (evidence: `src/screens/AlertSettings.jsx`)
- Webhook integrations → Backend API client: manages webhooks via (evidence: `src/screens/Integrations.jsx`)
- Webhook integrations → Plan limits: checks plan limits (evidence: `src/screens/Integrations.jsx`)
- Status overview → Backend API client: loads status via (evidence: `src/screens/DashboardHome.jsx`)
- Live aircraft map → Position poller: reads positions (evidence: `src/services/backgroundTracker.js`)
- Position poller → Backend API client: polls live aircraft (evidence: `src/services/backgroundTracker.js`)
- Tracking logs → Backend API client: loads tracking logs (evidence: `src/screens/Logs.jsx`)
- Ground station setup → Backend API client: loads station status (evidence: `src/screens/GroundStationSetup.jsx`)
- Discord bot → AircraftTracker backend: integrates with
