# paradox-target/paradoxart architecture

> Architecture diagram of the GitHub repository paradox-target/paradoxart, 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/paradox-target/paradoxart
- Repository: https://github.com/paradox-target/paradoxart

## Overview

Paradox Art is an Avalonia desktop application for HOI4 mod authors. Its current product centers on visually creating and connecting focus-tree nodes, with localization editing and mod/game resource discovery as major supporting workflows. The README also describes live validation and broader mod-file management; the future Blueprint mode is a stated goal, not an implemented subsystem shown here. Edges are limited to README statements and relationships visible in the supplied source excerpts or SOURCE INDEX; unsampled implementation details are not inferred.

Main entry points: [`Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs) (Resource Loading), [`Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs`](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs) (Localization Service), [`Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs`](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs) (Localization Manager), [`Hoi4BlueprintBuilder.Core/ViewsModels/FocusTreeEditorViewModel.cs`](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/FocusTreeEditorViewModel.cs) (Focus Editor)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_focus["Focus Tree Editing"]
  node_focus_editor["Focus Editor"]
  node_canvas_interaction["Canvas Interaction"]
  node_focus_node["Focus Node<br/>[FocusNode.cs]"]
  node_focus_type["Focus Types<br/>[FocusType.cs]"]
  node_focus_connections["Connection Overlay"]
  node_focus_validation["Focus Validation<br/>[ConditionHelper.cs]"]
end

subgraph group_localization["Localization"]
  node_localization_ui["Localization Manager"]
  node_localization_service["Localization Service"]
  node_localization_format["Localization Formatting"]
  node_language_helper["Language Support<br/>[LanguageHelper.cs]"]
  node_game_language["Game Languages<br/>[GameLanguage.cs]"]
end

subgraph group_resources["Mod Resources"]
  node_resource_loading["Resource Loading"]
  node_resource_watcher["Resource Watcher"]
  node_resource_interface["Resource Interface"]
  node_game_paths["Game Resource Paths"]
  node_mod_descriptor["Mod Descriptor"]
  node_keywords["Game Keywords<br/>[Keywords.cs]"]
  node_mod_files["Mod Files"]
end

subgraph group_configuration["Project Configuration"]
  node_project_config["Project Config"]
  node_app_settings["Application Settings<br/>[SettingsService.cs]"]
end

node_mod_author(("Mod Author"))

node_mod_author -->|"edits focus trees"| node_focus_editor
node_mod_author -->|"edits localization"| node_localization_ui
node_canvas_interaction -->|"notifies interaction"| node_focus_editor
node_canvas_interaction -->|"connects nodes"| node_focus_node
node_focus_editor -.->|"manages nodes"| node_focus_node
node_focus_connections -->|"previews connections"| node_focus_node
node_mod_author -->|"checks focus logic"| node_focus_validation
node_localization_ui -->|"loads and updates"| node_localization_service
node_localization_ui -->|"reads project settings"| node_project_config
node_localization_service -->|"uses resources"| node_resource_loading
node_localization_format -->|"formats localized text"| node_localization_service
node_localization_service -->|"uses language values"| node_game_language
node_language_helper -->|"selects language"| node_game_language
node_resource_loading -->|"resolves resource paths"| node_game_paths
node_resource_loading -->|"implements interface"| node_resource_interface
node_resource_watcher -->|"reloads resources"| node_resource_interface
node_resource_loading -->|"registers for watching"| node_resource_watcher
node_game_paths -.->|"uses mod metadata"| node_mod_descriptor
node_resource_loading -->|"parses mod resources"| node_mod_files
node_project_config -->|"loads mod-root setting"| node_app_settings
node_mod_author -->|"manages mod files"| node_mod_files

click node_focus_editor "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/FocusTreeEditorViewModel.cs"
click node_canvas_interaction "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/CanvasInteractionManager.cs"
click node_focus_node "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/Focus/FocusNode.cs"
click node_focus_type "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/Focus/FocusType.cs"
click node_focus_connections "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Controls/ConnectionPreviewOverlayControl.cs"
click node_localization_ui "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs"
click node_localization_service "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs"
click node_localization_format "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationFormatService.cs"
click node_language_helper "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Helpers/LanguageHelper.cs"
click node_game_language "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/GameLanguage.cs"
click node_resource_loading "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs"
click node_resource_watcher "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/GameResourcesWatcherService.cs"
click node_resource_interface "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/IResourcesService.cs"
click node_game_paths "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResourcesPathService.cs"
click node_mod_descriptor "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameModDescriptorService.cs"
click node_keywords "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Keywords.cs"
click node_project_config "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/ProjectConfigService.cs"
click node_app_settings "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/SettingsService.cs"
click node_focus_validation "https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Helpers/ConditionHelper.cs"

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_focus_editor,node_canvas_interaction,node_focus_node,node_focus_type,node_focus_connections,node_focus_validation toneBlue
class node_localization_ui,node_localization_service,node_localization_format,node_language_helper,node_game_language toneAmber
class node_resource_loading,node_resource_watcher,node_resource_interface,node_game_paths,node_mod_descriptor,node_keywords,node_mod_files toneMint
class node_project_config,node_app_settings toneRose
class node_mod_author toneIndigo
```

## Components

### Focus Tree Editing

- [Focus Editor](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/FocusTreeEditorViewModel.cs): `Hoi4BlueprintBuilder.Core/ViewsModels/FocusTreeEditorViewModel.cs`
- [Canvas Interaction](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/CanvasInteractionManager.cs): `Hoi4BlueprintBuilder.Core/Services/CanvasInteractionManager.cs`
- [Focus Node](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/Focus/FocusNode.cs): `Hoi4BlueprintBuilder.Core/Models/Focus/FocusNode.cs`
- [Focus Types](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/Focus/FocusType.cs): `Hoi4BlueprintBuilder.Core/Models/Focus/FocusType.cs`
- [Connection Overlay](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Controls/ConnectionPreviewOverlayControl.cs): `Hoi4BlueprintBuilder.Core/Controls/ConnectionPreviewOverlayControl.cs`
- [Focus Validation](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Helpers/ConditionHelper.cs): `Hoi4BlueprintBuilder.Core/Helpers/ConditionHelper.cs`

### Localization

- [Localization Manager](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs): `Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs`
- [Localization Service](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs`
- [Localization Formatting](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationFormatService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationFormatService.cs`
- [Language Support](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Helpers/LanguageHelper.cs): `Hoi4BlueprintBuilder.Core/Helpers/LanguageHelper.cs`
- [Game Languages](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Models/GameLanguage.cs): `Hoi4BlueprintBuilder.Core/Models/GameLanguage.cs`

### Mod Resources

- [Resource Loading](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`
- [Resource Watcher](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/GameResourcesWatcherService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/GameResourcesWatcherService.cs`
- [Resource Interface](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResources/Base/IResourcesService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/IResourcesService.cs`
- [Game Resource Paths](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameResourcesPathService.cs): `Hoi4BlueprintBuilder.Core/Services/GameResourcesPathService.cs`
- [Mod Descriptor](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/GameModDescriptorService.cs): `Hoi4BlueprintBuilder.Core/Services/GameModDescriptorService.cs`
- [Game Keywords](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Keywords.cs): `Hoi4BlueprintBuilder.Core/Keywords.cs`
- **Mod Files**

### Project Configuration

- [Project Config](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/ProjectConfigService.cs): `Hoi4BlueprintBuilder.Core/Services/ProjectConfigService.cs`
- [Application Settings](https://github.com/paradox-target/paradoxart/blob/main/Hoi4BlueprintBuilder.Core/Services/SettingsService.cs): `Hoi4BlueprintBuilder.Core/Services/SettingsService.cs`

### Other components

- **Mod Author**

## Connections

- Mod Author → Focus Editor: edits focus trees (evidence: `README.md`)
- Mod Author → Localization Manager: edits localization (evidence: `Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs`)
- Canvas Interaction → Focus Editor: notifies interaction (evidence: `Hoi4BlueprintBuilder.Core/Services/CanvasInteractionManager.cs`)
- Canvas Interaction → Focus Node: connects nodes (evidence: `Hoi4BlueprintBuilder.Core/Services/CanvasInteractionManager.cs`)
- Focus Editor → Focus Node: manages nodes
- Connection Overlay → Focus Node: previews connections (evidence: `Hoi4BlueprintBuilder.Core/Controls/ConnectionPreviewOverlayControl.cs`)
- Mod Author → Focus Validation: checks focus logic (evidence: `README.md`)
- Localization Manager → Localization Service: loads and updates (evidence: `Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs`)
- Localization Manager → Project Config: reads project settings (evidence: `Hoi4BlueprintBuilder.Core/ViewsModels/LocalizationManagerViewModel.cs`)
- Localization Service → Resource Loading: uses resources (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs`)
- Localization Formatting → Localization Service: formats localized text (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationFormatService.cs`)
- Localization Service → Game Languages: uses language values (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Localization/LocalizationService.cs`)
- Language Support → Game Languages: selects language (evidence: `Hoi4BlueprintBuilder.Core/Services/SettingsService.cs`)
- Resource Loading → Game Resource Paths: resolves resource paths (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`)
- Resource Loading → Resource Interface: implements interface (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`)
- Resource Watcher → Resource Interface: reloads resources (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/GameResourcesWatcherService.cs`)
- Resource Loading → Resource Watcher: registers for watching (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`)
- Game Resource Paths → Mod Descriptor: uses mod metadata (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResourcesPathService.cs`)
- Resource Loading → Mod Files: parses mod resources (evidence: `Hoi4BlueprintBuilder.Core/Services/GameResources/Base/ResourcesService.cs`)
- Project Config → Application Settings: loads mod-root setting (evidence: `Hoi4BlueprintBuilder.Core/Services/ProjectConfigService.cs`)
- Mod Author → Mod Files: manages mod files (evidence: `README.md`)
