# haisenberg-creator/vault architecture

> Architecture diagram of the GitHub repository haisenberg-creator/vault, 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/haisenberg-creator/vault
- Repository: https://github.com/haisenberg-creator/vault

## Overview

Vault is a local-first Markdown and task-management desktop app. Users navigate a workspace, open and edit Markdown notes, and track checklist tasks in folder-scoped YAML dashboards; changes are stored as ordinary files through Tauri. The graph also includes settings, session persistence, shortcuts, and archive/export capabilities documented in the repository. Several component and backend excerpts were not sampled, so links between those areas are shown only where supported by the README or sampled imports and calls.

Main entry points: [`src/components/layout/DualColumnLayout.tsx`](https://github.com/haisenberg-creator/vault/blob/main/src/components/layout/DualColumnLayout.tsx) (Dual-column layout), [`src/services/fileService.ts`](https://github.com/haisenberg-creator/vault/blob/main/src/services/fileService.ts) (File operations), [`src/App.tsx`](https://github.com/haisenberg-creator/vault/blob/main/src/App.tsx) (App bootstrap), [`src/components/sidebar/TaskDashboardSidebar.tsx`](https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/TaskDashboardSidebar.tsx) (Workspace sidebar)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_app["App bootstrap<br/>[App.tsx]"]
  node_layout["Dual-column layout"]
  node_session["Session persistence<br/>[sessionService.ts]"]
end

subgraph group_workspace["Workspace and notes"]
  node_sidebar["Workspace sidebar"]
  node_tree["File tree navigation<br/>[SidebarTree.tsx]"]
  node_editor["Markdown editor<br/>[EditorPane.tsx]"]
  node_checklist["Interactive checklists<br/>[ChecklistNode.tsx]"]
  node_file_service["File operations<br/>[fileService.ts]"]
  node_export["Archive export"]
end

subgraph group_tasks["Tasks and dashboards"]
  node_dashboard_service["Dashboard queries"]
  node_dashboard_view["Dashboard views<br/>[DashboardView.tsx]"]
  node_dashboard_widgets["Task widgets"]
  node_workspace_service["Task Markdown operations"]
end

subgraph group_platform["Desktop and preferences"]
  node_native["Tauri commands<br/>[lib.rs]"]
  node_settings["Settings interface<br/>[SettingsModal.tsx]"]
  node_theme["Theme preferences<br/>[themeService.ts]"]
  node_shortcuts["Global shortcuts"]
  node_shortcut_hook["Shortcut hook"]
  node_updates["Update notification"]
end

node_user(("Vault user"))
node_filesystem[("Local workspace files")]

node_user -->|"opens"| node_app
node_app -->|"requests workspace"| node_file_service
node_app -->|"renders"| node_layout
node_layout -->|"shows navigation"| node_sidebar
node_layout -->|"shows editor"| node_editor
node_sidebar -->|"loads and changes files"| node_file_service
node_editor -->|"reads and saves notes"| node_file_service
node_editor -->|"renders tasks"| node_checklist
node_file_service -->|"invokes filesystem commands"| node_native
node_native -->|"reads and writes"| node_filesystem
node_sidebar -->|"extracts task metadata"| node_dashboard_service
node_dashboard_view -->|"queries dashboard tasks"| node_dashboard_service
node_dashboard_view -->|"renders sections"| node_dashboard_widgets
node_dashboard_service -->|"uses task parsing"| node_workspace_service
node_workspace_service -->|"gets task state"| node_checklist
node_export -->|"exports workspace archive"| node_file_service
node_layout -->|"persists workspace state"| node_session
node_settings -->|"changes appearance"| node_theme
node_shortcut_hook -->|"registers shortcuts"| node_shortcuts
node_layout -->|"enables shortcuts"| node_shortcut_hook
node_app -->|"displays updates"| node_updates

click node_app "https://github.com/haisenberg-creator/vault/blob/main/src/App.tsx"
click node_layout "https://github.com/haisenberg-creator/vault/blob/main/src/components/layout/DualColumnLayout.tsx"
click node_sidebar "https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/TaskDashboardSidebar.tsx"
click node_tree "https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/SidebarTree.tsx"
click node_editor "https://github.com/haisenberg-creator/vault/blob/main/src/components/editor/EditorPane.tsx"
click node_checklist "https://github.com/haisenberg-creator/vault/blob/main/src/components/editor/ChecklistNode.tsx"
click node_file_service "https://github.com/haisenberg-creator/vault/blob/main/src/services/fileService.ts"
click node_native "https://github.com/haisenberg-creator/vault/blob/main/src-tauri/src/lib.rs"
click node_dashboard_service "https://github.com/haisenberg-creator/vault/blob/main/src/services/dashboardService.ts"
click node_dashboard_view "https://github.com/haisenberg-creator/vault/blob/main/src/components/dashboard/DashboardView.tsx"
click node_dashboard_widgets "https://github.com/haisenberg-creator/vault/blob/main/src/components/dashboard/DashboardSectionWidget.tsx"
click node_workspace_service "https://github.com/haisenberg-creator/vault/blob/main/src/services/workspaceService.ts"
click node_export "https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/ExportArchiveModal.tsx"
click node_session "https://github.com/haisenberg-creator/vault/blob/main/src/services/sessionService.ts"
click node_settings "https://github.com/haisenberg-creator/vault/blob/main/src/components/settings/SettingsModal.tsx"
click node_theme "https://github.com/haisenberg-creator/vault/blob/main/src/services/themeService.ts"
click node_shortcuts "https://github.com/haisenberg-creator/vault/blob/main/src/services/globalShortcutService.ts"
click node_shortcut_hook "https://github.com/haisenberg-creator/vault/blob/main/src/hooks/useGlobalShortcuts.ts"
click node_updates "https://github.com/haisenberg-creator/vault/blob/main/src/components/ui/UpdateNotification.tsx"

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_layout,node_session,node_user toneBlue
class node_sidebar,node_tree,node_editor,node_checklist,node_file_service,node_export,node_filesystem toneAmber
class node_dashboard_service,node_dashboard_view,node_dashboard_widgets,node_workspace_service toneMint
class node_native,node_settings,node_theme,node_shortcuts,node_shortcut_hook,node_updates toneRose
```

## Components

### Application shell

- [App bootstrap](https://github.com/haisenberg-creator/vault/blob/main/src/App.tsx): `src/App.tsx`
- [Dual-column layout](https://github.com/haisenberg-creator/vault/blob/main/src/components/layout/DualColumnLayout.tsx): `src/components/layout/DualColumnLayout.tsx`
- [Session persistence](https://github.com/haisenberg-creator/vault/blob/main/src/services/sessionService.ts): `src/services/sessionService.ts`

### Workspace and notes

- [Workspace sidebar](https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/TaskDashboardSidebar.tsx): `src/components/sidebar/TaskDashboardSidebar.tsx`
- [File tree navigation](https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/SidebarTree.tsx): `src/components/sidebar/SidebarTree.tsx`
- [Markdown editor](https://github.com/haisenberg-creator/vault/blob/main/src/components/editor/EditorPane.tsx): `src/components/editor/EditorPane.tsx`
- [Interactive checklists](https://github.com/haisenberg-creator/vault/blob/main/src/components/editor/ChecklistNode.tsx): `src/components/editor/ChecklistNode.tsx`
- [File operations](https://github.com/haisenberg-creator/vault/blob/main/src/services/fileService.ts): `src/services/fileService.ts`
- [Archive export](https://github.com/haisenberg-creator/vault/blob/main/src/components/sidebar/ExportArchiveModal.tsx): `src/components/sidebar/ExportArchiveModal.tsx`

### Tasks and dashboards

- [Dashboard queries](https://github.com/haisenberg-creator/vault/blob/main/src/services/dashboardService.ts): `src/services/dashboardService.ts`
- [Dashboard views](https://github.com/haisenberg-creator/vault/blob/main/src/components/dashboard/DashboardView.tsx): `src/components/dashboard/DashboardView.tsx`
- [Task widgets](https://github.com/haisenberg-creator/vault/blob/main/src/components/dashboard/DashboardSectionWidget.tsx): `src/components/dashboard/DashboardSectionWidget.tsx`
- [Task Markdown operations](https://github.com/haisenberg-creator/vault/blob/main/src/services/workspaceService.ts): `src/services/workspaceService.ts`

### Desktop and preferences

- [Tauri commands](https://github.com/haisenberg-creator/vault/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`
- [Settings interface](https://github.com/haisenberg-creator/vault/blob/main/src/components/settings/SettingsModal.tsx): `src/components/settings/SettingsModal.tsx`
- [Theme preferences](https://github.com/haisenberg-creator/vault/blob/main/src/services/themeService.ts): `src/services/themeService.ts`
- [Global shortcuts](https://github.com/haisenberg-creator/vault/blob/main/src/services/globalShortcutService.ts): `src/services/globalShortcutService.ts`
- [Shortcut hook](https://github.com/haisenberg-creator/vault/blob/main/src/hooks/useGlobalShortcuts.ts): `src/hooks/useGlobalShortcuts.ts`
- [Update notification](https://github.com/haisenberg-creator/vault/blob/main/src/components/ui/UpdateNotification.tsx): `src/components/ui/UpdateNotification.tsx`

### Other components

- **Vault user**
- **Local workspace files**

## Connections

- Vault user → App bootstrap: opens
- App bootstrap → File operations: requests workspace
- App bootstrap → Dual-column layout: renders
- Dual-column layout → Workspace sidebar: shows navigation
- Dual-column layout → Markdown editor: shows editor
- Workspace sidebar → File operations: loads and changes files
- Markdown editor → File operations: reads and saves notes
- Markdown editor → Interactive checklists: renders tasks
- File operations → Tauri commands: invokes filesystem commands
- Tauri commands → Local workspace files: reads and writes
- Workspace sidebar → Dashboard queries: extracts task metadata
- Dashboard views → Dashboard queries: queries dashboard tasks
- Dashboard views → Task widgets: renders sections
- Dashboard queries → Task Markdown operations: uses task parsing
- Task Markdown operations → Interactive checklists: gets task state
- Archive export → File operations: exports workspace archive
- Dual-column layout → Session persistence: persists workspace state
- Settings interface → Theme preferences: changes appearance
- Shortcut hook → Global shortcuts: registers shortcuts
- Dual-column layout → Shortcut hook: enables shortcuts
- App bootstrap → Update notification: displays updates
