# blazeboyz0/cinderde architecture

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

- Interactive diagram: https://gitdiagram.com/blazeboyz0/cinderde
- Repository: https://github.com/blazeboyz0/cinderde

## Overview

CinderDE is a lightweight Qt desktop code editor. The principal workflow is opening a workspace and editing files in tabs, with language-aware highlighting and optional LSP assistance; users can also build or run files using configured commands and view output. Workspace/session settings, user language packs, and preferences support that workflow. The graph reflects README capabilities and the supplied source index and excerpts; some UI wiring and unsampled subsystem details are not verified, so uncertain connections are omitted.

Main entry points: [`src/main_window.cpp`](https://github.com/blazeboyz0/cinderde/blob/main/src/main_window.cpp) (Main window), [`src/editor_tab.cpp`](https://github.com/blazeboyz0/cinderde/blob/main/src/editor_tab.cpp) (Editor tabs), [`src/lsp_manager.cpp`](https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_manager.cpp) (LSP manager), [`src/preferences.cpp`](https://github.com/blazeboyz0/cinderde/blob/main/src/preferences.cpp) (Preferences and session)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_app["Application startup<br/>[main.cpp]"]
  node_window["Main window<br/>[main_window.cpp]"]
  node_explorer["File explorer<br/>[file_explorer.cpp]"]
end

subgraph group_editing["Editing and languages"]
  node_editor["Editor tabs<br/>[editor_tab.cpp]"]
  node_highlight["Syntax highlighting"]
  node_completion["Code completion"]
  node_filetypes["File type detection"]
  node_languagepacks["Language packs<br/>[language_pack.cpp]"]
end

subgraph group_execution["Build and run"]
  node_buildmanager["Build/run manager"]
  node_builddialog["Build/run settings"]
  node_output["Output and diagnostics<br/>[output_panel.cpp]"]
  node_parser["Diagnostic parser"]
  node_toolchains["External toolchains"]
end

subgraph group_intelligence["Language intelligence"]
  node_lspmanager["LSP manager<br/>[lsp_manager.cpp]"]
  node_lspclient["LSP client<br/>[lsp_client.cpp]"]
  node_lspdialog["LSP configuration<br/>[lsp_dialog.cpp]"]
  node_servers["External LSP servers"]
end

subgraph group_settings["Workspace and settings"]
  node_workspace["Workspace configuration"]
  node_preferences[("Preferences and session<br/>[preferences.cpp]")]
  node_prefsui["Preferences dialog"]
end

node_developer(("Developer"))

node_developer -->|"launches"| node_app
node_app -->|"creates"| node_window
node_window -->|"hosts"| node_explorer
node_window -->|"hosts"| node_editor
node_window -->|"hosts"| node_output
node_window -->|"invokes"| node_buildmanager
node_window -->|"loads settings"| node_workspace
node_window -->|"restores session"| node_preferences
node_window -->|"opens"| node_builddialog
node_window -->|"opens"| node_lspdialog
node_editor -->|"detects type"| node_filetypes
node_editor -->|"configures"| node_highlight
node_editor -->|"uses"| node_completion
node_editor -->|"sends document events"| node_lspmanager
node_highlight -->|"uses definitions"| node_languagepacks
node_filetypes -->|"looks up extensions"| node_languagepacks
node_buildmanager -.->|"runs commands"| node_toolchains
node_lspmanager -->|"starts and manages"| node_lspclient
node_lspmanager -->|"detects language"| node_filetypes
node_lspmanager -->|"resolves language IDs"| node_languagepacks
node_lspmanager -->|"reads server config"| node_preferences
node_lspclient -.->|"communicates with"| node_servers
node_lspdialog -.->|"configures servers"| node_preferences
node_prefsui -->|"updates"| node_preferences
node_workspace -->|"supplies commands"| node_buildmanager

click node_app "https://github.com/blazeboyz0/cinderde/blob/main/src/main.cpp"
click node_window "https://github.com/blazeboyz0/cinderde/blob/main/src/main_window.cpp"
click node_explorer "https://github.com/blazeboyz0/cinderde/blob/main/src/file_explorer.cpp"
click node_editor "https://github.com/blazeboyz0/cinderde/blob/main/src/editor_tab.cpp"
click node_highlight "https://github.com/blazeboyz0/cinderde/blob/main/src/syntax_highlighter.cpp"
click node_completion "https://github.com/blazeboyz0/cinderde/blob/main/src/code_completion.cpp"
click node_filetypes "https://github.com/blazeboyz0/cinderde/blob/main/src/file_type_detector.cpp"
click node_languagepacks "https://github.com/blazeboyz0/cinderde/blob/main/src/language_pack.cpp"
click node_buildmanager "https://github.com/blazeboyz0/cinderde/blob/main/src/build_run_manager.cpp"
click node_builddialog "https://github.com/blazeboyz0/cinderde/blob/main/src/build_run_dialog.cpp"
click node_output "https://github.com/blazeboyz0/cinderde/blob/main/src/output_panel.cpp"
click node_parser "https://github.com/blazeboyz0/cinderde/blob/main/src/diagnostic_parser.cpp"
click node_lspmanager "https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_manager.cpp"
click node_lspclient "https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_client.cpp"
click node_lspdialog "https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_dialog.cpp"
click node_workspace "https://github.com/blazeboyz0/cinderde/blob/main/src/workspace_config.cpp"
click node_preferences "https://github.com/blazeboyz0/cinderde/blob/main/src/preferences.cpp"
click node_prefsui "https://github.com/blazeboyz0/cinderde/blob/main/src/preferences_dialog.cpp"

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_window,node_explorer toneBlue
class node_editor,node_highlight,node_completion,node_filetypes,node_languagepacks toneAmber
class node_buildmanager,node_builddialog,node_output,node_parser,node_toolchains toneMint
class node_lspmanager,node_lspclient,node_lspdialog,node_servers toneRose
class node_workspace,node_preferences,node_prefsui,node_developer toneIndigo
```

## Components

### Desktop interface

- [Application startup](https://github.com/blazeboyz0/cinderde/blob/main/src/main.cpp): `src/main.cpp`
- [Main window](https://github.com/blazeboyz0/cinderde/blob/main/src/main_window.cpp): `src/main_window.cpp`
- [File explorer](https://github.com/blazeboyz0/cinderde/blob/main/src/file_explorer.cpp): `src/file_explorer.cpp`

### Editing and languages

- [Editor tabs](https://github.com/blazeboyz0/cinderde/blob/main/src/editor_tab.cpp): `src/editor_tab.cpp`
- [Syntax highlighting](https://github.com/blazeboyz0/cinderde/blob/main/src/syntax_highlighter.cpp): `src/syntax_highlighter.cpp`
- [Code completion](https://github.com/blazeboyz0/cinderde/blob/main/src/code_completion.cpp): `src/code_completion.cpp`
- [File type detection](https://github.com/blazeboyz0/cinderde/blob/main/src/file_type_detector.cpp): `src/file_type_detector.cpp`
- [Language packs](https://github.com/blazeboyz0/cinderde/blob/main/src/language_pack.cpp): `src/language_pack.cpp`

### Build and run

- [Build/run manager](https://github.com/blazeboyz0/cinderde/blob/main/src/build_run_manager.cpp): `src/build_run_manager.cpp`
- [Build/run settings](https://github.com/blazeboyz0/cinderde/blob/main/src/build_run_dialog.cpp): `src/build_run_dialog.cpp`
- [Output and diagnostics](https://github.com/blazeboyz0/cinderde/blob/main/src/output_panel.cpp): `src/output_panel.cpp`
- [Diagnostic parser](https://github.com/blazeboyz0/cinderde/blob/main/src/diagnostic_parser.cpp): `src/diagnostic_parser.cpp`
- **External toolchains**

### Language intelligence

- [LSP manager](https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_manager.cpp): `src/lsp_manager.cpp`
- [LSP client](https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_client.cpp): `src/lsp_client.cpp`
- [LSP configuration](https://github.com/blazeboyz0/cinderde/blob/main/src/lsp_dialog.cpp): `src/lsp_dialog.cpp`
- **External LSP servers**

### Workspace and settings

- [Workspace configuration](https://github.com/blazeboyz0/cinderde/blob/main/src/workspace_config.cpp): `src/workspace_config.cpp`
- [Preferences and session](https://github.com/blazeboyz0/cinderde/blob/main/src/preferences.cpp): `src/preferences.cpp`
- [Preferences dialog](https://github.com/blazeboyz0/cinderde/blob/main/src/preferences_dialog.cpp): `src/preferences_dialog.cpp`

### Other components

- **Developer**

## Connections

- Developer → Application startup: launches (evidence: `README.md`)
- Application startup → Main window: creates (evidence: `src/main.cpp`)
- Main window → File explorer: hosts
- Main window → Editor tabs: hosts
- Main window → Output and diagnostics: hosts
- Main window → Build/run manager: invokes
- Main window → Workspace configuration: loads settings (evidence: `src/main_window.cpp`)
- Main window → Preferences and session: restores session (evidence: `src/main_window.cpp`)
- Main window → Build/run settings: opens (evidence: `src/main_window.cpp`)
- Main window → LSP configuration: opens (evidence: `src/main_window.cpp`)
- Editor tabs → File type detection: detects type (evidence: `src/editor_tab.cpp`)
- Editor tabs → Syntax highlighting: configures
- Editor tabs → Code completion: uses (evidence: `src/editor_tab.cpp`)
- Editor tabs → LSP manager: sends document events (evidence: `src/editor_tab.cpp`)
- Syntax highlighting → Language packs: uses definitions
- File type detection → Language packs: looks up extensions (evidence: `src/file_type_detector.cpp`)
- Build/run manager → External toolchains: runs commands (evidence: `README.md`)
- LSP manager → LSP client: starts and manages (evidence: `src/lsp_manager.cpp`)
- LSP manager → File type detection: detects language (evidence: `src/lsp_manager.cpp`)
- LSP manager → Language packs: resolves language IDs (evidence: `src/lsp_manager.cpp`)
- LSP manager → Preferences and session: reads server config (evidence: `src/lsp_manager.cpp`)
- LSP client → External LSP servers: communicates with (evidence: `README.md`)
- LSP configuration → Preferences and session: configures servers (evidence: `src/lsp_dialog.cpp`)
- Preferences dialog → Preferences and session: updates (evidence: `src/preferences_dialog.cpp`)
- Workspace configuration → Build/run manager: supplies commands
