# zenplus/orbitkanban architecture

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

- Interactive diagram: https://gitdiagram.com/zenplus/orbitkanban
- Repository: https://github.com/zenplus/orbitkanban

## Overview

OrbitKanban is a portable, offline-first task and release workspace. Users launch the desktop app, load or create an organization, then manage tasks and linked issues through configurable views; they can also inspect milestones, kanban, and task groups, and transfer organization data. Local persistence, browser access through the running app, and optional GitHub update checks support that workflow. The graph preserves the README’s major product branches. Some connections are documented only at a high level; unsampled implementation details are not inferred.

Main entry points: [`src/renderer/App.js`](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/App.js) (Renderer entry), [`src/desktop/DesktopApplication.js`](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/DesktopApplication.js) (Desktop application), [`src/shared/domain`](https://github.com/zenplus/orbitkanban/tree/main/src/shared/domain) (Workspace domain), [`src/web/WebServer.js`](https://github.com/zenplus/orbitkanban/blob/main/src/web/WebServer.js) (Local web server)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Application runtime"]
  node_desktop["Desktop application"]
  node_renderer["Renderer entry<br/>[App.js]"]
  node_workspaceapi["Workspace API bridge<br/>[preload.js]"]
end

subgraph group_workspace["Workspace and domain"]
  node_store[("Workspace persistence<br/>[WorkspaceStore.js]")]
  node_attachments[("Task attachments<br/>[AttachmentStore.js]")]
  node_domain["Workspace domain"]
  node_datafactory["Workspace creation<br/>[DataFactory.js]"]
  node_archive["Data validation"]
  node_orgtransfer["Organization transfer"]
  node_localization["Localization<br/>[Translator.js]"]
end

subgraph group_experience["Workspace interface"]
  node_state["Interface state<br/>[AppState.js]"]
  node_shell["App shell<br/>[AppShell.js]"]
end

subgraph group_capabilities["Product capabilities"]
  node_taskview["Task lists and views<br/>[TaskList.js]"]
  node_issues["Linked issues<br/>[IssueList.js]"]
  node_milestones["Milestones<br/>[MilestoneView.js]"]
  node_kanban["Kanban board<br/>[KanbanView.js]"]
  node_groups["Task groups<br/>[GroupsPage.js]"]
  node_settings["Workspace settings"]
  node_transfer["Data transfer<br/>[TransferPanel.js]"]
  node_guide["In-app guide<br/>[GuideView.js]"]
  node_themes["Themes and graphics<br/>[ThemeGenerator.js]"]
end

subgraph group_integrations["Access and integrations"]
  node_webserver["Local web server<br/>[WebServer.js]"]
  node_webbridge["Browser bridge<br/>[WebBridge.js]"]
  node_updater["Update service<br/>[Updater.js]"]
end

node_user(("Workspace user"))

node_user -->|"launches"| node_desktop
node_desktop -.->|"opens interface"| node_renderer
node_desktop -->|"loads workspace"| node_store
node_desktop -->|"starts browser access"| node_webserver
node_desktop -->|"configures updates"| node_updater
node_renderer -->|"creates state"| node_state
node_renderer -->|"creates and loads"| node_shell
node_renderer -.->|"calls workspace API"| node_workspaceapi
node_workspaceapi -.->|"accesses data"| node_store
node_store -->|"uses domain model"| node_domain
node_domain -->|"creates data"| node_datafactory
node_domain -->|"validates data"| node_archive
node_renderer -.->|"provides task view"| node_taskview
node_renderer -.->|"provides issue view"| node_issues
node_renderer -.->|"provides timeline"| node_milestones
node_renderer -.->|"provides board"| node_kanban
node_renderer -.->|"provides group view"| node_groups
node_renderer -.->|"provides settings"| node_settings
node_renderer -.->|"provides transfers"| node_transfer
node_transfer -.->|"imports and exports"| node_orgtransfer
node_orgtransfer -->|"uses domain rules"| node_domain
node_webserver -->|"loads snapshots"| node_store
node_webbridge -.->|"uses browser API"| node_webserver
node_webserver -->|"lists attachments"| node_attachments
node_renderer -.->|"provides guide"| node_guide
node_renderer -.->|"uses appearance"| node_themes
node_renderer -->|"translates interface"| node_localization
node_desktop -->|"configures storage"| node_attachments
node_user -.->|"opens browser view"| node_webbridge
node_user -.->|"requests update check"| node_updater

click node_desktop "https://github.com/zenplus/orbitkanban/blob/main/src/desktop/DesktopApplication.js"
click node_renderer "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/App.js"
click node_state "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/core/AppState.js"
click node_shell "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/layout/AppShell.js"
click node_workspaceapi "https://github.com/zenplus/orbitkanban/blob/main/src/desktop/preload.js"
click node_store "https://github.com/zenplus/orbitkanban/blob/main/src/desktop/storage/WorkspaceStore.js"
click node_attachments "https://github.com/zenplus/orbitkanban/blob/main/src/desktop/storage/AttachmentStore.js"
click node_domain "https://github.com/zenplus/orbitkanban/tree/main/src/shared/domain"
click node_datafactory "https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/DataFactory.js"
click node_archive "https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/ArchiveValidator.js"
click node_taskview "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/tasks/TaskList.js"
click node_issues "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/issues/IssueList.js"
click node_milestones "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/milestones/MilestoneView.js"
click node_kanban "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/kanban/KanbanView.js"
click node_groups "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/groups/GroupsPage.js"
click node_settings "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/settings/SettingsController.js"
click node_transfer "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/transfer/TransferPanel.js"
click node_orgtransfer "https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/OrganizationTransfer.js"
click node_webserver "https://github.com/zenplus/orbitkanban/blob/main/src/web/WebServer.js"
click node_webbridge "https://github.com/zenplus/orbitkanban/blob/main/src/web/WebBridge.js"
click node_updater "https://github.com/zenplus/orbitkanban/blob/main/src/desktop/update/Updater.js"
click node_guide "https://github.com/zenplus/orbitkanban/blob/main/src/renderer/guide/GuideView.js"
click node_themes "https://github.com/zenplus/orbitkanban/blob/main/src/shared/graphics/ThemeGenerator.js"
click node_localization "https://github.com/zenplus/orbitkanban/blob/main/src/shared/localization/Translator.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_desktop,node_renderer,node_workspaceapi,node_user toneBlue
class node_store,node_attachments,node_domain,node_datafactory,node_archive,node_orgtransfer,node_localization toneAmber
class node_state,node_shell toneMint
class node_taskview,node_issues,node_milestones,node_kanban,node_groups,node_settings,node_transfer,node_guide,node_themes toneRose
class node_webserver,node_webbridge,node_updater toneIndigo
```

## Components

### Application runtime

- [Desktop application](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/DesktopApplication.js): `src/desktop/DesktopApplication.js`
- [Renderer entry](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/App.js): `src/renderer/App.js`
- [Workspace API bridge](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/preload.js): `src/desktop/preload.js`

### Workspace and domain

- [Workspace persistence](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/storage/WorkspaceStore.js): `src/desktop/storage/WorkspaceStore.js`
- [Task attachments](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/storage/AttachmentStore.js): `src/desktop/storage/AttachmentStore.js`
- [Workspace domain](https://github.com/zenplus/orbitkanban/tree/main/src/shared/domain): `src/shared/domain`
- [Workspace creation](https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/DataFactory.js): `src/shared/domain/DataFactory.js`
- [Data validation](https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/ArchiveValidator.js): `src/shared/domain/ArchiveValidator.js`
- [Organization transfer](https://github.com/zenplus/orbitkanban/blob/main/src/shared/domain/OrganizationTransfer.js): `src/shared/domain/OrganizationTransfer.js`
- [Localization](https://github.com/zenplus/orbitkanban/blob/main/src/shared/localization/Translator.js): `src/shared/localization/Translator.js`

### Workspace interface

- [Interface state](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/core/AppState.js): `src/renderer/core/AppState.js`
- [App shell](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/layout/AppShell.js): `src/renderer/layout/AppShell.js`

### Product capabilities

- [Task lists and views](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/tasks/TaskList.js): `src/renderer/tasks/TaskList.js`
- [Linked issues](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/issues/IssueList.js): `src/renderer/issues/IssueList.js`
- [Milestones](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/milestones/MilestoneView.js): `src/renderer/milestones/MilestoneView.js`
- [Kanban board](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/kanban/KanbanView.js): `src/renderer/kanban/KanbanView.js`
- [Task groups](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/groups/GroupsPage.js): `src/renderer/groups/GroupsPage.js`
- [Workspace settings](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/settings/SettingsController.js): `src/renderer/settings/SettingsController.js`
- [Data transfer](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/transfer/TransferPanel.js): `src/renderer/transfer/TransferPanel.js`
- [In-app guide](https://github.com/zenplus/orbitkanban/blob/main/src/renderer/guide/GuideView.js): `src/renderer/guide/GuideView.js`
- [Themes and graphics](https://github.com/zenplus/orbitkanban/blob/main/src/shared/graphics/ThemeGenerator.js): `src/shared/graphics/ThemeGenerator.js`

### Access and integrations

- [Local web server](https://github.com/zenplus/orbitkanban/blob/main/src/web/WebServer.js): `src/web/WebServer.js`
- [Browser bridge](https://github.com/zenplus/orbitkanban/blob/main/src/web/WebBridge.js): `src/web/WebBridge.js`
- [Update service](https://github.com/zenplus/orbitkanban/blob/main/src/desktop/update/Updater.js): `src/desktop/update/Updater.js`

### Other components

- **Workspace user**

## Connections

- Workspace user → Desktop application: launches (evidence: `README.md`)
- Desktop application → Renderer entry: opens interface
- Desktop application → Workspace persistence: loads workspace (evidence: `src/desktop/DesktopApplication.js`)
- Desktop application → Local web server: starts browser access (evidence: `src/desktop/DesktopApplication.js`)
- Desktop application → Update service: configures updates (evidence: `src/desktop/DesktopApplication.js`)
- Renderer entry → Interface state: creates state (evidence: `src/renderer/App.js`)
- Renderer entry → App shell: creates and loads (evidence: `src/renderer/App.js`)
- Renderer entry → Workspace API bridge: calls workspace API
- Workspace API bridge → Workspace persistence: accesses data
- Workspace persistence → Workspace domain: uses domain model (evidence: `src/desktop/storage/WorkspaceStore.js`)
- Workspace domain → Workspace creation: creates data (evidence: `src/shared/domain/index.js`)
- Workspace domain → Data validation: validates data (evidence: `src/shared/domain/index.js`)
- Renderer entry → Task lists and views: provides task view (evidence: `src/renderer/App.js`)
- Renderer entry → Linked issues: provides issue view (evidence: `src/renderer/App.js`)
- Renderer entry → Milestones: provides timeline (evidence: `src/renderer/App.js`)
- Renderer entry → Kanban board: provides board (evidence: `src/renderer/App.js`)
- Renderer entry → Task groups: provides group view (evidence: `src/renderer/App.js`)
- Renderer entry → Workspace settings: provides settings (evidence: `src/renderer/App.js`)
- Renderer entry → Data transfer: provides transfers
- Data transfer → Organization transfer: imports and exports
- Organization transfer → Workspace domain: uses domain rules (evidence: `src/shared/domain/OrganizationTransfer.js`)
- Local web server → Workspace persistence: loads snapshots (evidence: `src/web/WebServer.js`)
- Browser bridge → Local web server: uses browser API
- Local web server → Task attachments: lists attachments (evidence: `src/web/WebServer.js`)
- Renderer entry → In-app guide: provides guide (evidence: `src/renderer/App.js`)
- Renderer entry → Themes and graphics: uses appearance
- Renderer entry → Localization: translates interface
- Desktop application → Task attachments: configures storage (evidence: `src/desktop/DesktopApplication.js`)
- Workspace user → Browser bridge: opens browser view (evidence: `README.md`)
- Workspace user → Update service: requests update check (evidence: `README.md`)
