# mguenther-build/vscode-dashboard architecture

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

- Interactive diagram: https://gitdiagram.com/mguenther-build/vscode-dashboard
- Repository: https://github.com/mguenther-build/vscode-dashboard

## Overview

This is a VS Code Git project dashboard. Users add scan paths, browse discovered repositories and modules, inspect project/Git status, choose project metadata or branches, and perform push/pull operations. The webview sends commands to the extension host; the host-side Router delegates them through Provider, while inspection combines project types, module detection and Git data. The tree names scanning, watching and rendering layers, but their source was not sampled, so some internal wiring is intentionally omitted.

Main entry points: [`src/Initializer.js`](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/Initializer.js) (App initializer), [`src/services/git/executive/GitExecutive.js`](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/executive/GitExecutive.js) (Git executive), [`src/services/projects/ProjectStore.js`](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/projects/ProjectStore.js) (Project metadata), [`src/services/Inspector.js`](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/Inspector.js) (Project inspector)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Dashboard webview"]
  node_app["Webview app<br/>[App.js]"]
  node_dashboard["Dashboard view<br/>[DashboardView.js]"]
  node_messenger["Webview messenger<br/>[Messenger.js]"]
end

subgraph group_host["Extension host"]
  node_router["Command router<br/>[Router.js]"]
  node_provider["Provider<br/>[Provider.js]"]
  node_initializer["App initializer<br/>[Initializer.js]"]
  node_builder["View builder<br/>[Builder.js]"]
end

subgraph group_discovery["Project discovery"]
  node_scanner["Repository scanner<br/>[Scanner.js]"]
  node_inspector["Project inspector<br/>[Inspector.js]"]
  node_module_detector["Module detector<br/>[ModuleDetector.js]"]
  node_watcher["Path watcher<br/>[Watcher.js]"]
end

subgraph group_git["Git operations"]
  node_git_exec["Git executive<br/>[GitExecutive.js]"]
  node_git_service["Git queries<br/>[GitService.js]"]
  node_push_service["Push service<br/>[GitPushService.js]"]
  node_pull_service["Pull service<br/>[GitPullService.js]"]
end

subgraph group_state["Project state"]
  node_project_types["Project types<br/>[ProjectTypes.js]"]
  node_project_store[("Project metadata<br/>[ProjectStore.js]")]
  node_state_manager["Scan path state<br/>[StateManager.js]"]
end

node_user(("User"))
node_git_cli{{"Git CLI"}}

node_user -->|"interacts"| node_app
node_app -->|"renders"| node_dashboard
node_app -->|"initializes"| node_messenger
node_dashboard -->|"posts commands"| node_messenger
node_messenger -->|"dispatches messages"| node_router
node_router -->|"routes commands"| node_provider
node_initializer -->|"constructs"| node_provider
node_initializer -->|"injects"| node_scanner
node_initializer -->|"injects"| node_builder
node_initializer -->|"injects"| node_git_exec
node_initializer -->|"constructs"| node_project_store
node_initializer -->|"constructs"| node_state_manager
node_initializer -->|"constructs"| node_watcher
node_inspector -->|"detects modules"| node_module_detector
node_inspector -->|"queries status"| node_git_service
node_inspector -->|"reads type"| node_project_types
node_project_types -->|"reads metadata"| node_project_store
node_git_exec -->|"checks branches"| node_git_service
node_git_exec -->|"delegates push"| node_push_service
node_git_exec -->|"delegates pull"| node_pull_service
node_git_service -->|"runs Git queries"| node_git_cli
node_push_service -->|"runs push commands"| node_git_cli
node_pull_service -->|"runs pull commands"| node_git_cli
node_state_manager -->|"persists paths"| node_state_manager
node_project_store -->|"persists metadata"| node_project_store

click node_app "https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/App.js"
click node_dashboard "https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/views/dashboardView/DashboardView.js"
click node_messenger "https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/Messenger.js"
click node_router "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Router.js"
click node_provider "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Provider.js"
click node_initializer "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/Initializer.js"
click node_scanner "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Scanner.js"
click node_inspector "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/Inspector.js"
click node_module_detector "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/detectors/ModuleDetector.js"
click node_builder "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Builder.js"
click node_watcher "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/watcher/Watcher.js"
click node_git_exec "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/executive/GitExecutive.js"
click node_git_service "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitService.js"
click node_push_service "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitPushService.js"
click node_pull_service "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitPullService.js"
click node_project_types "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/projects/ProjectTypes.js"
click node_project_store "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/projects/ProjectStore.js"
click node_state_manager "https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/StateManager.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_app,node_dashboard,node_messenger,node_user toneBlue
class node_router,node_provider,node_initializer,node_builder toneAmber
class node_scanner,node_inspector,node_module_detector,node_watcher toneMint
class node_git_exec,node_git_service,node_push_service,node_pull_service toneRose
class node_project_types,node_project_store,node_state_manager,node_git_cli toneIndigo
```

## Components

### Dashboard webview

- [Webview app](https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/App.js): `media/base/App.js`
- [Dashboard view](https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/views/dashboardView/DashboardView.js): `media/base/views/dashboardView/DashboardView.js`
- [Webview messenger](https://github.com/mguenther-build/vscode-dashboard/blob/main/media/base/Messenger.js): `media/base/Messenger.js`

### Extension host

- [Command router](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Router.js): `src/core/Router.js`
- [Provider](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Provider.js): `src/core/Provider.js`
- [App initializer](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/Initializer.js): `src/Initializer.js`
- [View builder](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Builder.js): `src/core/Builder.js`

### Project discovery

- [Repository scanner](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/Scanner.js): `src/core/Scanner.js`
- [Project inspector](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/Inspector.js): `src/services/Inspector.js`
- [Module detector](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/detectors/ModuleDetector.js): `src/services/detectors/ModuleDetector.js`
- [Path watcher](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/watcher/Watcher.js): `src/services/watcher/Watcher.js`

### Git operations

- [Git executive](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/executive/GitExecutive.js): `src/services/git/executive/GitExecutive.js`
- [Git queries](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitService.js): `src/services/git/service/GitService.js`
- [Push service](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitPushService.js): `src/services/git/service/GitPushService.js`
- [Pull service](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/git/service/GitPullService.js): `src/services/git/service/GitPullService.js`

### Project state

- [Project types](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/projects/ProjectTypes.js): `src/services/projects/ProjectTypes.js`
- [Project metadata](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/services/projects/ProjectStore.js): `src/services/projects/ProjectStore.js`
- [Scan path state](https://github.com/mguenther-build/vscode-dashboard/blob/main/src/core/StateManager.js): `src/core/StateManager.js`

### Other components

- **User**
- **Git CLI**

## Connections

- User → Webview app: interacts
- Webview app → Dashboard view: renders
- Webview app → Webview messenger: initializes
- Dashboard view → Webview messenger: posts commands
- Webview messenger → Command router: dispatches messages
- Command router → Provider: routes commands
- App initializer → Provider: constructs
- App initializer → Repository scanner: injects
- App initializer → View builder: injects
- App initializer → Git executive: injects
- App initializer → Project metadata: constructs
- App initializer → Scan path state: constructs
- App initializer → Path watcher: constructs
- Project inspector → Module detector: detects modules
- Project inspector → Git queries: queries status
- Project inspector → Project types: reads type
- Project types → Project metadata: reads metadata
- Git executive → Git queries: checks branches
- Git executive → Push service: delegates push
- Git executive → Pull service: delegates pull
- Git queries → Git CLI: runs Git queries
- Push service → Git CLI: runs push commands
- Pull service → Git CLI: runs pull commands
- Scan path state → Scan path state: persists paths
- Project metadata → Project metadata: persists metadata
