# fluxloader-team/fluxloader architecture

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

- Interactive diagram: https://gitdiagram.com/fluxloader-team/fluxloader
- Repository: https://github.com/fluxloader-team/fluxloader

## Overview

Sandustry Fluxloader is a cross-platform Electron modloader. The main user workflow is choosing manager or game launch, then browsing or creating mods, queueing install/update/removal actions, and loading the resulting mods into Sandustry. Its runtime also manages configuration, dependency-aware actions, load order, game-file patching, worker/game mod entrypoints, and logs. The graph follows documented capabilities and sampled IPC ownership; unsampled details are represented only at their enclosing source path.

Main entry points: [`src/electron.js`](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js) (Electron runtime), [`src/manager/manager.js`](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js) (Mod manager), [`src/game.js`](https://github.com/fluxloader-team/fluxloader/blob/main/src/game.js) (Game mod runtime), [`src/worker.js`](https://github.com/fluxloader-team/fluxloader/blob/main/src/worker.js) (Worker mod runtime)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop runtime"]
  node_electron_main["Electron runtime<br/>[electron.js]"]
  node_manager_ui["Mod manager<br/>[manager.js]"]
  node_manager_preload["Manager IPC bridge<br/>[manager-preload.js]"]
  node_manager_view["Manager interface<br/>[manager.html]"]
  node_manager_logs["Manager logs<br/>[manager.js]"]
end

subgraph group_mod_management["Mod management"]
  node_mod_catalog["Mod discovery<br/>[manager.js]"]
  node_mod_actions["Action queue<br/>[manager.js]"]
  node_installed_mods[("Installed mods<br/>[electron.js]")]
  node_mod_creation["Mod creation<br/>[manager.js]"]
  node_load_order["Load order<br/>[electron.js]"]
  node_mod_config[("Mod configuration<br/>[electron.js]")]
end

subgraph group_game_integration["Game integration"]
  node_game_files["Game file patching<br/>[electron.js]"]
  node_game_process["Sandustry game"]
  node_game_runtime["Game mod runtime<br/>[game.js]"]
  node_worker_runtime["Worker mod runtime<br/>[worker.js]"]
end

subgraph group_shared_services["Shared services"]
  node_action_solver["Dependency solver<br/>[common.js]"]
  node_event_bus["Events and logging<br/>[common.js]"]
end

node_user(("User"))
node_mod_service["Mod service"]

node_user -->|"launches"| node_electron_main
node_electron_main -->|"opens manager"| node_manager_ui
node_electron_main -->|"launches"| node_game_process
node_manager_view -->|"renders"| node_manager_ui
node_manager_ui -->|"invokes IPC"| node_manager_preload
node_manager_preload -->|"forwards IPC"| node_electron_main
node_manager_ui -->|"browses"| node_mod_catalog
node_mod_catalog -->|"fetches mods"| node_electron_main
node_electron_main -.->|"requests catalog"| node_mod_service
node_mod_service -.->|"returns metadata"| node_electron_main
node_manager_ui -->|"queues actions"| node_mod_actions
node_mod_actions -->|"requests actions"| node_electron_main
node_electron_main -->|"calculates actions"| node_action_solver
node_action_solver -.->|"fetches version data"| node_mod_service
node_electron_main -->|"installs and scans"| node_installed_mods
node_manager_ui -->|"renders installed mods"| node_installed_mods
node_manager_ui -->|"submits mod details"| node_mod_creation
node_manager_ui -->|"edits load order"| node_load_order
node_electron_main -->|"calculates dependencies"| node_load_order
node_manager_ui -->|"edits configuration"| node_mod_config
node_electron_main -->|"validates and persists"| node_mod_config
node_electron_main -->|"patches files"| node_game_files
node_game_files -->|"runs patched game"| node_game_process
node_game_process -->|"loads runtime"| node_game_runtime
node_game_runtime -->|"requests loaded mods"| node_electron_main
node_game_runtime -->|"reads and writes config"| node_mod_config
node_game_process -->|"starts workers"| node_worker_runtime
node_game_runtime -->|"sends messages"| node_worker_runtime
node_worker_runtime -->|"sends messages"| node_game_runtime
node_game_runtime -->|"emits events and logs"| node_event_bus
node_worker_runtime -->|"emits events"| node_event_bus
node_electron_main -->|"forwards game logs"| node_manager_logs
node_manager_logs -->|"displays logs"| node_manager_ui

click node_electron_main "https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js"
click node_manager_ui "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js"
click node_manager_preload "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager-preload.js"
click node_manager_view "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.html"
click node_mod_catalog "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js"
click node_mod_actions "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js"
click node_action_solver "https://github.com/fluxloader-team/fluxloader/blob/main/src/common.js"
click node_installed_mods "https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js"
click node_mod_creation "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js"
click node_load_order "https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js"
click node_mod_config "https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js"
click node_game_files "https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js"
click node_game_runtime "https://github.com/fluxloader-team/fluxloader/blob/main/src/game.js"
click node_worker_runtime "https://github.com/fluxloader-team/fluxloader/blob/main/src/worker.js"
click node_event_bus "https://github.com/fluxloader-team/fluxloader/blob/main/src/common.js"
click node_manager_logs "https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js"

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_electron_main,node_manager_ui,node_manager_preload,node_manager_view,node_manager_logs,node_user toneBlue
class node_mod_catalog,node_mod_actions,node_installed_mods,node_mod_creation,node_load_order,node_mod_config toneAmber
class node_game_files,node_game_process,node_game_runtime,node_worker_runtime toneMint
class node_action_solver,node_event_bus toneRose
class node_mod_service toneIndigo
```

## Components

### Desktop runtime

- [Electron runtime](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js): `src/electron.js`
- [Mod manager](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js): `src/manager/manager.js`
- [Manager IPC bridge](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager-preload.js): `src/manager/manager-preload.js`
- [Manager interface](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.html): `src/manager/manager.html`
- [Manager logs](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js): `src/manager/manager.js`

### Mod management

- [Mod discovery](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js): `src/manager/manager.js`
- [Action queue](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js): `src/manager/manager.js`
- [Installed mods](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js): `src/electron.js`
- [Mod creation](https://github.com/fluxloader-team/fluxloader/blob/main/src/manager/manager.js): `src/manager/manager.js`
- [Load order](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js): `src/electron.js`
- [Mod configuration](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js): `src/electron.js`

### Game integration

- [Game file patching](https://github.com/fluxloader-team/fluxloader/blob/main/src/electron.js): `src/electron.js`
- **Sandustry game**
- [Game mod runtime](https://github.com/fluxloader-team/fluxloader/blob/main/src/game.js): `src/game.js`
- [Worker mod runtime](https://github.com/fluxloader-team/fluxloader/blob/main/src/worker.js): `src/worker.js`

### Shared services

- [Dependency solver](https://github.com/fluxloader-team/fluxloader/blob/main/src/common.js): `src/common.js`
- [Events and logging](https://github.com/fluxloader-team/fluxloader/blob/main/src/common.js): `src/common.js`

### Other components

- **User**
- **Mod service**

## Connections

- User → Electron runtime: launches
- Electron runtime → Mod manager: opens manager
- Electron runtime → Sandustry game: launches
- Manager interface → Mod manager: renders
- Mod manager → Manager IPC bridge: invokes IPC
- Manager IPC bridge → Electron runtime: forwards IPC
- Mod manager → Mod discovery: browses
- Mod discovery → Electron runtime: fetches mods
- Electron runtime → Mod service: requests catalog
- Mod service → Electron runtime: returns metadata
- Mod manager → Action queue: queues actions
- Action queue → Electron runtime: requests actions
- Electron runtime → Dependency solver: calculates actions
- Dependency solver → Mod service: fetches version data
- Electron runtime → Installed mods: installs and scans
- Mod manager → Installed mods: renders installed mods
- Mod manager → Mod creation: submits mod details
- Mod manager → Load order: edits load order
- Electron runtime → Load order: calculates dependencies
- Mod manager → Mod configuration: edits configuration
- Electron runtime → Mod configuration: validates and persists
- Electron runtime → Game file patching: patches files
- Game file patching → Sandustry game: runs patched game
- Sandustry game → Game mod runtime: loads runtime
- Game mod runtime → Electron runtime: requests loaded mods
- Game mod runtime → Mod configuration: reads and writes config
- Sandustry game → Worker mod runtime: starts workers
- Game mod runtime → Worker mod runtime: sends messages
- Worker mod runtime → Game mod runtime: sends messages
- Game mod runtime → Events and logging: emits events and logs
- Worker mod runtime → Events and logging: emits events
- Electron runtime → Manager logs: forwards game logs
- Manager logs → Mod manager: displays logs
