# anefzaoui/misterdownloadmanager architecture

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

- Interactive diagram: https://gitdiagram.com/anefzaoui/misterdownloadmanager
- Repository: https://github.com/anefzaoui/misterdownloadmanager

## Overview

Mister Download Manager is a cross-platform desktop download manager with a browser extension and command-line entry point. Users add downloads through the desktop UI or browser integration; the app manages their state and queues, while the engine, torrent support, and archive extraction provide distinct transfer and post-download capabilities. The source index and excerpts establish key app relationships, but do not expose the full runtime wiring among the engine, extension, and app, so those links are omitted or marked unverified.

Main entry points: [`crates/app/src/app.rs`](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/app.rs) (Download manager), [`crates/app/src/main.rs`](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/main.rs) (App startup), [`crates/engine/src/download.rs`](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/engine/src/download.rs) (Transfer engine), [`crates/app/src/extractq.rs`](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/extractq.rs) (Extraction queue)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["User entry points"]
  node_appmain["App startup<br/>[main.rs]"]
  node_climain["CLI entry<br/>[main.rs]"]
end

subgraph group_desktop["Desktop application"]
  node_app["Download manager<br/>[app.rs]"]
  node_chrome["Main window UI<br/>[chrome.rs]"]
  node_dialogs["Download dialogs<br/>[dialogs.rs]"]
  node_model["Download model<br/>[model.rs]"]
  node_options["Options UI<br/>[options.rs]"]
  node_settings["Settings<br/>[settings.rs]"]
  node_store[("Persistent state<br/>[store.rs]")]
end

subgraph group_transfer["Transfer and processing"]
  node_engine["Transfer engine<br/>[download.rs]"]
  node_planner["Transfer planning<br/>[planner.rs]"]
  node_torrent["Torrent transfers<br/>[lib.rs]"]
  node_extract["Archive extraction<br/>[lib.rs]"]
  node_extractq["Extraction queue<br/>[extractq.rs]"]
end

subgraph group_integration["Browser and remote"]
  node_extension["Browser extension<br/>[background.js]"]
  node_ipc["App IPC<br/>[lib.rs]"]
  node_remote["Remote control<br/>[lib.rs]"]
end

subgraph group_support["Additional capabilities"]
  node_debrid["Debrid providers<br/>[lib.rs]"]
  node_video["Video tools<br/>[video.rs]"]
  node_rss["RSS feeds<br/>[rss.rs]"]
  node_i18n["Localization<br/>[i18n.rs]"]
  node_help["Help and updates<br/>[help.rs]"]
end

node_user(("Desktop user"))
node_browser(("Browser user"))

node_user -->|"starts app"| node_appmain
node_browser -->|"uses extension"| node_extension
node_appmain -->|"starts UI"| node_app
node_appmain -->|"dispatches CLI"| node_climain
node_appmain -->|"starts IPC"| node_ipc
node_app -->|"renders window"| node_chrome
node_app -->|"opens dialogs"| node_dialogs
node_app -->|"manages state"| node_model
node_app -->|"loads state"| node_store
node_app -->|"uses settings"| node_settings
node_app -->|"uses feeds"| node_rss
node_app -->|"queues extraction"| node_extractq
node_extractq -->|"extracts archives"| node_extract
node_appmain -.->|"runs transfers"| node_engine
node_appmain -.->|"supports torrents"| node_torrent
node_app -.->|"supports accounts"| node_debrid
node_extension -.->|"connects natively"| node_ipc
node_app -.->|"supports control"| node_remote
node_app -.->|"offers video tools"| node_video
node_app -->|"localizes UI"| node_i18n
node_app -.->|"offers help"| node_help
node_engine -.->|"plans transfers"| node_planner

click node_appmain "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/main.rs"
click node_climain "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/cli/src/main.rs"
click node_app "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/app.rs"
click node_chrome "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/chrome.rs"
click node_dialogs "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/dialogs.rs"
click node_model "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/model.rs"
click node_options "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/options.rs"
click node_settings "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/settings.rs"
click node_store "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/store.rs"
click node_engine "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/engine/src/download.rs"
click node_planner "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/engine/src/planner.rs"
click node_torrent "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/torrent/src/lib.rs"
click node_extract "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/extract/src/lib.rs"
click node_extractq "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/extractq.rs"
click node_extension "https://github.com/anefzaoui/misterdownloadmanager/blob/main/extension/background.js"
click node_ipc "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/ipc/src/lib.rs"
click node_remote "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/remote/src/lib.rs"
click node_debrid "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/debrid/src/lib.rs"
click node_video "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/tools/src/video.rs"
click node_rss "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/rss.rs"
click node_i18n "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/i18n.rs"
click node_help "https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/help.rs"

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_appmain,node_climain,node_user,node_browser toneBlue
class node_app,node_chrome,node_dialogs,node_model,node_options,node_settings,node_store toneAmber
class node_engine,node_planner,node_torrent,node_extract,node_extractq toneMint
class node_extension,node_ipc,node_remote toneRose
class node_debrid,node_video,node_rss,node_i18n,node_help toneIndigo
```

## Components

### User entry points

- [App startup](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/main.rs): `crates/app/src/main.rs`
- [CLI entry](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/cli/src/main.rs): `crates/cli/src/main.rs`

### Desktop application

- [Download manager](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/app.rs): `crates/app/src/app.rs`
- [Main window UI](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/chrome.rs): `crates/app/src/chrome.rs`
- [Download dialogs](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/dialogs.rs): `crates/app/src/dialogs.rs`
- [Download model](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/model.rs): `crates/app/src/model.rs`
- [Options UI](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/options.rs): `crates/app/src/options.rs`
- [Settings](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/settings.rs): `crates/app/src/settings.rs`
- [Persistent state](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/store.rs): `crates/app/src/store.rs`

### Transfer and processing

- [Transfer engine](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/engine/src/download.rs): `crates/engine/src/download.rs`
- [Transfer planning](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/engine/src/planner.rs): `crates/engine/src/planner.rs`
- [Torrent transfers](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/torrent/src/lib.rs): `crates/torrent/src/lib.rs`
- [Archive extraction](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/extract/src/lib.rs): `crates/extract/src/lib.rs`
- [Extraction queue](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/extractq.rs): `crates/app/src/extractq.rs`

### Browser and remote

- [Browser extension](https://github.com/anefzaoui/misterdownloadmanager/blob/main/extension/background.js): `extension/background.js`
- [App IPC](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/ipc/src/lib.rs): `crates/ipc/src/lib.rs`
- [Remote control](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/remote/src/lib.rs): `crates/remote/src/lib.rs`

### Additional capabilities

- [Debrid providers](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/debrid/src/lib.rs): `crates/debrid/src/lib.rs`
- [Video tools](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/tools/src/video.rs): `crates/tools/src/video.rs`
- [RSS feeds](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/rss.rs): `crates/app/src/rss.rs`
- [Localization](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/i18n.rs): `crates/app/src/i18n.rs`
- [Help and updates](https://github.com/anefzaoui/misterdownloadmanager/blob/main/crates/app/src/help.rs): `crates/app/src/help.rs`

### Other components

- **Desktop user**
- **Browser user**

## Connections

- Desktop user → App startup: starts app (evidence: `README.md`)
- Browser user → Browser extension: uses extension (evidence: `README.md`)
- App startup → Download manager: starts UI (evidence: `crates/app/src/main.rs`)
- App startup → CLI entry: dispatches CLI (evidence: `crates/app/src/main.rs`)
- App startup → App IPC: starts IPC (evidence: `crates/app/src/main.rs`)
- Download manager → Main window UI: renders window (evidence: `crates/app/src/app.rs`)
- Download manager → Download dialogs: opens dialogs (evidence: `crates/app/src/app.rs`)
- Download manager → Download model: manages state (evidence: `crates/app/src/app.rs`)
- Download manager → Persistent state: loads state (evidence: `crates/app/src/app.rs`)
- Download manager → Settings: uses settings (evidence: `crates/app/src/app.rs`)
- Download manager → RSS feeds: uses feeds (evidence: `crates/app/src/app.rs`)
- Download manager → Extraction queue: queues extraction (evidence: `crates/app/src/app.rs`)
- Extraction queue → Archive extraction: extracts archives (evidence: `crates/app/src/extractq.rs`)
- App startup → Transfer engine: runs transfers
- App startup → Torrent transfers: supports torrents (evidence: `README.md`)
- Download manager → Debrid providers: supports accounts
- Browser extension → App IPC: connects natively
- Download manager → Remote control: supports control
- Download manager → Video tools: offers video tools
- Download manager → Localization: localizes UI (evidence: `crates/app/src/i18n.rs`)
- Download manager → Help and updates: offers help (evidence: `crates/app/src/help.rs`)
- Transfer engine → Transfer planning: plans transfers
