# waynetd777/brainstead architecture

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

- Interactive diagram: https://gitdiagram.com/waynetd777/brainstead
- Repository: https://github.com/waynetd777/brainstead

## Overview

Brainstead is a desktop app for tasks, notes, and an AI-assisted wiki stored as plain Markdown in a user-chosen vault. The main workflow starts in the app UI, uses the Rust-backed vault and domain features, and reads or changes vault files; changes can be reviewed and reverted. Separate capabilities include task queries and GTD reviews, source ingestion and claim checking, assistant chats and tools, and Teams/Outlook capture and sync. The graph uses README statements and the shown source references; unsampled implementation links are omitted or marked unverified.

Main entry points: [`src/App.tsx`](https://github.com/waynetd777/brainstead/blob/main/src/App.tsx) (App screens), [`src/Ingest.tsx`](https://github.com/waynetd777/brainstead/blob/main/src/Ingest.tsx) (Ingest screens), [`src-tauri/core/src/ingest.rs`](https://github.com/waynetd777/brainstead/blob/main/src-tauri/core/src/ingest.rs) (Source ingestion), [`src/api.ts`](https://github.com/waynetd777/brainstead/blob/main/src/api.ts) (UI API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Desktop app"]
  node_app_ui["App screens<br/>[App.tsx]"]
  node_api["UI API<br/>[api.ts]"]
  node_nav["Navigation<br/>[nav.ts]"]
  node_store["Settings store<br/>[store.ts]"]
  node_platform["Platform services<br/>[mod.rs]"]
  node_app_log["App logging<br/>[applog.rs]"]
end

subgraph group_vault["Vault and notes"]
  node_vault_service["Vault service<br/>[vault.rs]"]
  node_notes["Notes<br/>[notes.rs]"]
  node_edits["File edits<br/>[edits.rs]"]
  node_changes["Change history<br/>[changes.rs]"]
  node_dataview_parse["Dataview parsing<br/>[parse.ts]"]
end

subgraph group_gtd["Tasks and GTD"]
  node_task_ui["Task screens<br/>[Tasks.tsx]"]
  node_task_queries["Task queries<br/>[query.ts]"]
  node_reviews["Weekly reviews<br/>[reviews.rs]"]
end

subgraph group_wiki["Wiki and assistants"]
  node_ingest_ui["Ingest screens<br/>[Ingest.tsx]"]
  node_ingest_core["Source ingestion<br/>[ingest.rs]"]
  node_knowledge["Wiki knowledge<br/>[knowledge.rs]"]
  node_ask["Assistant chats<br/>[ask.rs]"]
  node_mcp["Terminal interface<br/>[lib.rs]"]
  node_claims["Claim checking<br/>[claims.rs]"]
end

subgraph group_capture["Capture integrations"]
  node_outlook["Outlook capture<br/>[background.js]"]
  node_teams["Teams capture<br/>[extractor.js]"]
  node_sync["Teams Outlook sync<br/>[run.rs]"]
end

node_user(("User"))

node_user -->|"uses"| node_app_ui
node_app_ui -->|"calls"| node_api
node_app_ui -->|"navigates"| node_nav
node_app_ui -->|"reads state"| node_store
node_store -->|"saves settings"| node_api
node_api -->|"uses"| node_nav
node_user -->|"chooses vault"| node_vault_service
node_vault_service -.->|"serves vault notes"| node_notes
node_user -->|"manages tasks"| node_task_ui
node_task_ui -.->|"queries tasks"| node_task_queries
node_user -->|"runs weekly review"| node_reviews
node_user -->|"starts ingest"| node_ingest_ui
node_ingest_ui -.->|"runs ingest"| node_ingest_core
node_ingest_core -->|"checks claims"| node_claims
node_user -->|"asks assistant"| node_ask
node_mcp -.->|"drives app"| node_ask
node_user -->|"captures mail"| node_outlook
node_user -->|"captures chats"| node_teams
node_teams -.->|"supplies sources"| node_ingest_ui
node_outlook -.->|"supplies sources"| node_ingest_ui
node_user -->|"enables sync"| node_sync
node_ingest_core -->|"lists changes"| node_changes
node_changes -->|"reverts edits"| node_edits
node_ask -->|"makes changes"| node_edits
node_user -->|"uses note queries"| node_dataview_parse

click node_app_ui "https://github.com/waynetd777/brainstead/blob/main/src/App.tsx"
click node_api "https://github.com/waynetd777/brainstead/blob/main/src/api.ts"
click node_nav "https://github.com/waynetd777/brainstead/blob/main/src/nav.ts"
click node_store "https://github.com/waynetd777/brainstead/blob/main/src/store.ts"
click node_platform "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/platform/mod.rs"
click node_vault_service "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/vault.rs"
click node_notes "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/notes.rs"
click node_edits "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/edits.rs"
click node_changes "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/changes.rs"
click node_task_ui "https://github.com/waynetd777/brainstead/blob/main/src/Tasks.tsx"
click node_task_queries "https://github.com/waynetd777/brainstead/blob/main/src/tasksq/query.ts"
click node_reviews "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/reviews.rs"
click node_ingest_ui "https://github.com/waynetd777/brainstead/blob/main/src/Ingest.tsx"
click node_ingest_core "https://github.com/waynetd777/brainstead/blob/main/src-tauri/core/src/ingest.rs"
click node_knowledge "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/knowledge.rs"
click node_ask "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/ask.rs"
click node_mcp "https://github.com/waynetd777/brainstead/blob/main/src-tauri/mcp/src/lib.rs"
click node_outlook "https://github.com/waynetd777/brainstead/blob/main/extensions/outlook-capture/background.js"
click node_teams "https://github.com/waynetd777/brainstead/blob/main/extensions/teams-capture/extractor.js"
click node_sync "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/sync/run.rs"
click node_claims "https://github.com/waynetd777/brainstead/blob/main/src-tauri/core/src/claims.rs"
click node_dataview_parse "https://github.com/waynetd777/brainstead/blob/main/src/md/dataview/parse.ts"
click node_app_log "https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/applog.rs"

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_ui,node_api,node_nav,node_store,node_platform,node_app_log,node_user toneBlue
class node_vault_service,node_notes,node_edits,node_changes,node_dataview_parse toneAmber
class node_task_ui,node_task_queries,node_reviews toneMint
class node_ingest_ui,node_ingest_core,node_knowledge,node_ask,node_mcp,node_claims toneRose
class node_outlook,node_teams,node_sync toneIndigo
```

## Components

### Desktop app

- [App screens](https://github.com/waynetd777/brainstead/blob/main/src/App.tsx): `src/App.tsx`
- [UI API](https://github.com/waynetd777/brainstead/blob/main/src/api.ts): `src/api.ts`
- [Navigation](https://github.com/waynetd777/brainstead/blob/main/src/nav.ts): `src/nav.ts`
- [Settings store](https://github.com/waynetd777/brainstead/blob/main/src/store.ts): `src/store.ts`
- [Platform services](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/platform/mod.rs): `src-tauri/src/platform/mod.rs`
- [App logging](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/applog.rs): `src-tauri/src/applog.rs`

### Vault and notes

- [Vault service](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/vault.rs): `src-tauri/src/vault.rs`
- [Notes](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/notes.rs): `src-tauri/src/notes.rs`
- [File edits](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/edits.rs): `src-tauri/src/edits.rs`
- [Change history](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/changes.rs): `src-tauri/src/changes.rs`
- [Dataview parsing](https://github.com/waynetd777/brainstead/blob/main/src/md/dataview/parse.ts): `src/md/dataview/parse.ts`

### Tasks and GTD

- [Task screens](https://github.com/waynetd777/brainstead/blob/main/src/Tasks.tsx): `src/Tasks.tsx`
- [Task queries](https://github.com/waynetd777/brainstead/blob/main/src/tasksq/query.ts): `src/tasksq/query.ts`
- [Weekly reviews](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/reviews.rs): `src-tauri/src/reviews.rs`

### Wiki and assistants

- [Ingest screens](https://github.com/waynetd777/brainstead/blob/main/src/Ingest.tsx): `src/Ingest.tsx`
- [Source ingestion](https://github.com/waynetd777/brainstead/blob/main/src-tauri/core/src/ingest.rs): `src-tauri/core/src/ingest.rs`
- [Wiki knowledge](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/knowledge.rs): `src-tauri/src/knowledge.rs`
- [Assistant chats](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/ask.rs): `src-tauri/src/ask.rs`
- [Terminal interface](https://github.com/waynetd777/brainstead/blob/main/src-tauri/mcp/src/lib.rs): `src-tauri/mcp/src/lib.rs`
- [Claim checking](https://github.com/waynetd777/brainstead/blob/main/src-tauri/core/src/claims.rs): `src-tauri/core/src/claims.rs`

### Capture integrations

- [Outlook capture](https://github.com/waynetd777/brainstead/blob/main/extensions/outlook-capture/background.js): `extensions/outlook-capture/background.js`
- [Teams capture](https://github.com/waynetd777/brainstead/blob/main/extensions/teams-capture/extractor.js): `extensions/teams-capture/extractor.js`
- [Teams Outlook sync](https://github.com/waynetd777/brainstead/blob/main/src-tauri/src/sync/run.rs): `src-tauri/src/sync/run.rs`

### Other components

- **User**

## Connections

- User → App screens: uses
- App screens → UI API: calls (evidence: `src/App.tsx`)
- App screens → Navigation: navigates (evidence: `src/App.tsx`)
- App screens → Settings store: reads state (evidence: `src/App.tsx`)
- Settings store → UI API: saves settings (evidence: `src/store.ts`)
- UI API → Navigation: uses (evidence: `src/api.ts`)
- User → Vault service: chooses vault
- Vault service → Notes: serves vault notes
- User → Task screens: manages tasks
- Task screens → Task queries: queries tasks
- User → Weekly reviews: runs weekly review
- User → Ingest screens: starts ingest (evidence: `src/Ingest.tsx`)
- Ingest screens → Source ingestion: runs ingest
- Source ingestion → Claim checking: checks claims (evidence: `src-tauri/core/src/ingest.rs`)
- User → Assistant chats: asks assistant
- Terminal interface → Assistant chats: drives app
- User → Outlook capture: captures mail
- User → Teams capture: captures chats
- Teams capture → Ingest screens: supplies sources
- Outlook capture → Ingest screens: supplies sources
- User → Teams Outlook sync: enables sync
- Source ingestion → Change history: lists changes
- Change history → File edits: reverts edits (evidence: `src-tauri/src/changes.rs`)
- Assistant chats → File edits: makes changes (evidence: `src-tauri/src/ask.rs`)
- User → Dataview parsing: uses note queries
