# proxyma01/duskforge architecture

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

- Interactive diagram: https://gitdiagram.com/proxyma01/duskforge
- Repository: https://github.com/proxyma01/duskforge
- Video tour (about a minute): https://gitdiagram.com/proxyma01/duskforge/video

## Overview

DuskForge is a desktop manager for WoW 3.3.5a addons, patches, server settings, and game launching. Its main workflow is selecting content and a WoW location, downloading addons or patches, then managing installed patches or launching the game. The sampled code places most GUI orchestration and download logic in Duskforge.py, with configuration/catalog and launch utilities in Core.py. The README documents the broader feature set; omitted source excerpts limit certainty about some UI wiring.

Main entry points: [`Duskforge.py`](https://github.com/proxyma01/duskforge/blob/main/Duskforge.py) (Main application), [`Core.py`](https://github.com/proxyma01/duskforge/blob/main/Core.py) (Game launcher), [`Det_win.py`](https://github.com/proxyma01/duskforge/blob/main/Det_win.py) (Patch manager), [`Lang_manager.py`](https://github.com/proxyma01/duskforge/blob/main/Lang_manager.py) (Language controls)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_app["Main application<br/>[Duskforge.py]"]
  node_language["Language controls<br/>[Lang_manager.py]"]
  node_tooltips["Addon previews<br/>[tooltip_image.py]"]
  node_detection["Patch manager<br/>[Det_win.py]"]
end

subgraph group_content["Addon and patch content"]
  node_download["Content downloads<br/>[Duskforge.py]"]
  node_extract["Addon extraction<br/>[Duskforge.py]"]
  node_addon_catalog["Addon catalog"]
  node_patch_catalog["Patch catalog"]
end

subgraph group_settings["Game settings"]
  node_config["Config utilities<br/>[Core.py]"]
  node_config_store[("User configuration")]
  node_server["Realmlist switching<br/>[Duskforge.py]"]
end

subgraph group_runtime["Local game runtime"]
  node_wow_files[("WoW installation")]
  node_launcher["Game launcher<br/>[Core.py]"]
end

node_user(("Player"))
node_web["Content hosts"]
node_wow["WoW process"]

node_user -->|"uses"| node_app
node_app -->|"changes language"| node_language
node_app -->|"loads previews"| node_tooltips
node_app -->|"opens manager"| node_detection
node_app -->|"starts downloads"| node_download
node_download -->|"reads URLs"| node_addon_catalog
node_download -->|"reads URLs"| node_patch_catalog
node_download -->|"downloads files"| node_web
node_download -->|"extracts addons"| node_extract
node_extract -->|"writes addon files"| node_wow_files
node_download -->|"writes patches"| node_wow_files
node_detection -->|"lists, pauses, deletes patches"| node_wow_files
node_app -->|"selects server"| node_server
node_server -->|"updates realmlist"| node_wow_files
node_app -->|"saves settings"| node_config
node_config -->|"reads, writes"| node_config_store
node_app -->|"starts game"| node_launcher
node_launcher -->|"reads location"| node_config_store
node_launcher -->|"checks executable"| node_wow_files
node_launcher -->|"launches"| node_wow

click node_app "https://github.com/proxyma01/duskforge/blob/main/Duskforge.py"
click node_language "https://github.com/proxyma01/duskforge/blob/main/Lang_manager.py"
click node_tooltips "https://github.com/proxyma01/duskforge/blob/main/tooltip_image.py"
click node_detection "https://github.com/proxyma01/duskforge/blob/main/Det_win.py"
click node_download "https://github.com/proxyma01/duskforge/blob/main/Duskforge.py"
click node_extract "https://github.com/proxyma01/duskforge/blob/main/Duskforge.py"
click node_addon_catalog "https://github.com/proxyma01/duskforge/blob/main/json/addon_wotlk_db_url.json"
click node_patch_catalog "https://github.com/proxyma01/duskforge/blob/main/json/patch_wotlk_db_url.json"
click node_config "https://github.com/proxyma01/duskforge/blob/main/Core.py"
click node_server "https://github.com/proxyma01/duskforge/blob/main/Duskforge.py"
click node_launcher "https://github.com/proxyma01/duskforge/blob/main/Core.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_language,node_tooltips,node_detection toneBlue
class node_download,node_extract,node_addon_catalog,node_patch_catalog toneAmber
class node_config,node_config_store,node_server toneMint
class node_wow_files,node_launcher toneRose
class node_user,node_web,node_wow toneIndigo
```

## Components

### Desktop interface

- [Main application](https://github.com/proxyma01/duskforge/blob/main/Duskforge.py): `Duskforge.py`
- [Language controls](https://github.com/proxyma01/duskforge/blob/main/Lang_manager.py): `Lang_manager.py`
- [Addon previews](https://github.com/proxyma01/duskforge/blob/main/tooltip_image.py): `tooltip_image.py`
- [Patch manager](https://github.com/proxyma01/duskforge/blob/main/Det_win.py): `Det_win.py`

### Addon and patch content

- [Content downloads](https://github.com/proxyma01/duskforge/blob/main/Duskforge.py): `Duskforge.py`
- [Addon extraction](https://github.com/proxyma01/duskforge/blob/main/Duskforge.py): `Duskforge.py`
- [Addon catalog](https://github.com/proxyma01/duskforge/blob/main/json/addon_wotlk_db_url.json): `json/addon_wotlk_db_url.json`
- [Patch catalog](https://github.com/proxyma01/duskforge/blob/main/json/patch_wotlk_db_url.json): `json/patch_wotlk_db_url.json`

### Game settings

- [Config utilities](https://github.com/proxyma01/duskforge/blob/main/Core.py): `Core.py`
- **User configuration**
- [Realmlist switching](https://github.com/proxyma01/duskforge/blob/main/Duskforge.py): `Duskforge.py`

### Local game runtime

- **WoW installation**
- [Game launcher](https://github.com/proxyma01/duskforge/blob/main/Core.py): `Core.py`

### Other components

- **Player**
- **Content hosts**
- **WoW process**

## Connections

- Player → Main application: uses
- Main application → Language controls: changes language
- Main application → Addon previews: loads previews
- Main application → Patch manager: opens manager
- Main application → Content downloads: starts downloads
- Content downloads → Addon catalog: reads URLs
- Content downloads → Patch catalog: reads URLs
- Content downloads → Content hosts: downloads files
- Content downloads → Addon extraction: extracts addons
- Addon extraction → WoW installation: writes addon files
- Content downloads → WoW installation: writes patches
- Patch manager → WoW installation: lists, pauses, deletes patches
- Main application → Realmlist switching: selects server
- Realmlist switching → WoW installation: updates realmlist
- Main application → Config utilities: saves settings
- Config utilities → User configuration: reads, writes
- Main application → Game launcher: starts game
- Game launcher → User configuration: reads location
- Game launcher → WoW installation: checks executable
- Game launcher → WoW process: launches
