# darknecrocities/domonote architecture

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

- Interactive diagram: https://gitdiagram.com/darknecrocities/domonote
- Repository: https://github.com/darknecrocities/domonote

## Overview

DomoNote is a local-first AI workspace: users capture meetings, documents, screen operations, and notes, then organize or synthesize that material with local AI. The web app is the main runtime entry point and dispatches users to feature views; IndexedDB stores workspace data. The graph includes README-documented feature paths, but several view-to-service links are inferred from module names because those implementations were not sampled.

Main entry points: [`src/App.tsx`](https://github.com/darknecrocities/domonote/blob/main/src/App.tsx) (App router), [`src/components/meetings/meeting-recorder.tsx`](https://github.com/darknecrocities/domonote/blob/main/src/components/meetings/meeting-recorder.tsx) (Meeting recorder), [`src/views/documents-view.tsx`](https://github.com/darknecrocities/domonote/blob/main/src/views/documents-view.tsx) (Document intelligence), [`src/views/meetings-view.tsx`](https://github.com/darknecrocities/domonote/blob/main/src/views/meetings-view.tsx) (Meeting secretary)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Workspace app"]
  node_app["App router<br/>[App.tsx]"]
  node_workspace["Workspace context"]
  node_database[("IndexedDB<br/>[index.ts]")]
  node_dashboard["Dashboard<br/>[dashboard-view.tsx]"]
end

subgraph group_capture["Capture workflows"]
  node_meetings["Meeting secretary<br/>[meetings-view.tsx]"]
  node_recorder["Meeting recorder"]
  node_audio["Audio services<br/>[recorder.ts]"]
  node_transcriber["Transcription<br/>[transcriber.ts]"]
  node_operations["Operation capture"]
  node_manuals["SOP manuals<br/>[manuals-view.tsx]"]
end

subgraph group_knowledge["Knowledge workflows"]
  node_documents["Document intelligence<br/>[documents-view.tsx]"]
  node_pdf["PDF parsing"]
  node_notes["Notes<br/>[notes-view.tsx]"]
  node_schedule["Schedule<br/>[schedule-view.tsx]"]
end

subgraph group_ai["Local AI"]
  node_aiworkspace["AI workspace"]
  node_rag["Document retrieval<br/>[rag.ts]"]
  node_ai_provider["AI provider<br/>[provider.ts]"]
end

subgraph group_integrations["Integrations"]
  node_ollama["Ollama service"]
  node_extension["Chrome extension<br/>[background.js]"]
  node_companion["Local companion<br/>[main.py]"]
  node_calendar_service["Google Calendar<br/>[google-calendar.ts]"]
end

node_user(("User"))

node_user -->|"opens"| node_app
node_app -->|"reads state"| node_workspace
node_app -->|"initializes"| node_database
node_app -->|"dispatches"| node_dashboard
node_app -->|"dispatches"| node_meetings
node_app -->|"dispatches"| node_documents
node_app -->|"dispatches"| node_notes
node_app -->|"dispatches"| node_schedule
node_app -->|"dispatches"| node_aiworkspace
node_meetings -->|"records"| node_recorder
node_recorder -->|"captures audio"| node_audio
node_recorder -->|"transcribes"| node_transcriber
node_user -->|"records actions"| node_operations
node_operations -->|"creates manuals"| node_manuals
node_documents -->|"parses files"| node_pdf
node_documents -->|"retrieves context"| node_rag
node_aiworkspace -->|"requests synthesis"| node_ai_provider
node_ai_provider -->|"calls locally"| node_ollama
node_extension -.->|"streams audio"| node_meetings
node_companion -.->|"proxies requests"| node_ollama
node_schedule -.->|"syncs events"| node_calendar_service

click node_app "https://github.com/darknecrocities/domonote/blob/main/src/App.tsx"
click node_workspace "https://github.com/darknecrocities/domonote/blob/main/src/context/workspace-context.tsx"
click node_database "https://github.com/darknecrocities/domonote/blob/main/src/db/index.ts"
click node_dashboard "https://github.com/darknecrocities/domonote/blob/main/src/views/dashboard-view.tsx"
click node_meetings "https://github.com/darknecrocities/domonote/blob/main/src/views/meetings-view.tsx"
click node_recorder "https://github.com/darknecrocities/domonote/blob/main/src/components/meetings/meeting-recorder.tsx"
click node_audio "https://github.com/darknecrocities/domonote/blob/main/src/services/audio/recorder.ts"
click node_transcriber "https://github.com/darknecrocities/domonote/blob/main/src/services/audio/transcriber.ts"
click node_operations "https://github.com/darknecrocities/domonote/blob/main/src/components/operations/operation-recorder.tsx"
click node_manuals "https://github.com/darknecrocities/domonote/blob/main/src/views/manuals-view.tsx"
click node_documents "https://github.com/darknecrocities/domonote/blob/main/src/views/documents-view.tsx"
click node_pdf "https://github.com/darknecrocities/domonote/blob/main/src/services/documents/universal-parser.ts"
click node_notes "https://github.com/darknecrocities/domonote/blob/main/src/views/notes-view.tsx"
click node_schedule "https://github.com/darknecrocities/domonote/blob/main/src/views/schedule-view.tsx"
click node_aiworkspace "https://github.com/darknecrocities/domonote/blob/main/src/components/ai-workspace/ai-workspace-view.tsx"
click node_rag "https://github.com/darknecrocities/domonote/blob/main/src/services/ai/rag.ts"
click node_ai_provider "https://github.com/darknecrocities/domonote/blob/main/src/services/ai/provider.ts"
click node_extension "https://github.com/darknecrocities/domonote/blob/main/browser-extension/background.js"
click node_companion "https://github.com/darknecrocities/domonote/blob/main/local-companion/main.py"
click node_calendar_service "https://github.com/darknecrocities/domonote/blob/main/src/services/calendar/google-calendar.ts"

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_workspace,node_database,node_dashboard,node_user toneBlue
class node_meetings,node_recorder,node_audio,node_transcriber,node_operations,node_manuals toneAmber
class node_documents,node_pdf,node_notes,node_schedule toneMint
class node_aiworkspace,node_rag,node_ai_provider toneRose
class node_ollama,node_extension,node_companion,node_calendar_service toneIndigo
```

## Components

### Workspace app

- [App router](https://github.com/darknecrocities/domonote/blob/main/src/App.tsx): `src/App.tsx`
- [Workspace context](https://github.com/darknecrocities/domonote/blob/main/src/context/workspace-context.tsx): `src/context/workspace-context.tsx`
- [IndexedDB](https://github.com/darknecrocities/domonote/blob/main/src/db/index.ts): `src/db/index.ts`
- [Dashboard](https://github.com/darknecrocities/domonote/blob/main/src/views/dashboard-view.tsx): `src/views/dashboard-view.tsx`

### Capture workflows

- [Meeting secretary](https://github.com/darknecrocities/domonote/blob/main/src/views/meetings-view.tsx): `src/views/meetings-view.tsx`
- [Meeting recorder](https://github.com/darknecrocities/domonote/blob/main/src/components/meetings/meeting-recorder.tsx): `src/components/meetings/meeting-recorder.tsx`
- [Audio services](https://github.com/darknecrocities/domonote/blob/main/src/services/audio/recorder.ts): `src/services/audio/recorder.ts`
- [Transcription](https://github.com/darknecrocities/domonote/blob/main/src/services/audio/transcriber.ts): `src/services/audio/transcriber.ts`
- [Operation capture](https://github.com/darknecrocities/domonote/blob/main/src/components/operations/operation-recorder.tsx): `src/components/operations/operation-recorder.tsx`
- [SOP manuals](https://github.com/darknecrocities/domonote/blob/main/src/views/manuals-view.tsx): `src/views/manuals-view.tsx`

### Knowledge workflows

- [Document intelligence](https://github.com/darknecrocities/domonote/blob/main/src/views/documents-view.tsx): `src/views/documents-view.tsx`
- [PDF parsing](https://github.com/darknecrocities/domonote/blob/main/src/services/documents/universal-parser.ts): `src/services/documents/universal-parser.ts`
- [Notes](https://github.com/darknecrocities/domonote/blob/main/src/views/notes-view.tsx): `src/views/notes-view.tsx`
- [Schedule](https://github.com/darknecrocities/domonote/blob/main/src/views/schedule-view.tsx): `src/views/schedule-view.tsx`

### Local AI

- [AI workspace](https://github.com/darknecrocities/domonote/blob/main/src/components/ai-workspace/ai-workspace-view.tsx): `src/components/ai-workspace/ai-workspace-view.tsx`
- [Document retrieval](https://github.com/darknecrocities/domonote/blob/main/src/services/ai/rag.ts): `src/services/ai/rag.ts`
- [AI provider](https://github.com/darknecrocities/domonote/blob/main/src/services/ai/provider.ts): `src/services/ai/provider.ts`

### Integrations

- **Ollama service**
- [Chrome extension](https://github.com/darknecrocities/domonote/blob/main/browser-extension/background.js): `browser-extension/background.js`
- [Local companion](https://github.com/darknecrocities/domonote/blob/main/local-companion/main.py): `local-companion/main.py`
- [Google Calendar](https://github.com/darknecrocities/domonote/blob/main/src/services/calendar/google-calendar.ts): `src/services/calendar/google-calendar.ts`

### Other components

- **User**

## Connections

- User → App router: opens
- App router → Workspace context: reads state
- App router → IndexedDB: initializes
- App router → Dashboard: dispatches
- App router → Meeting secretary: dispatches
- App router → Document intelligence: dispatches
- App router → Notes: dispatches
- App router → Schedule: dispatches
- App router → AI workspace: dispatches
- Meeting secretary → Meeting recorder: records
- Meeting recorder → Audio services: captures audio
- Meeting recorder → Transcription: transcribes
- User → Operation capture: records actions
- Operation capture → SOP manuals: creates manuals
- Document intelligence → PDF parsing: parses files
- Document intelligence → Document retrieval: retrieves context
- AI workspace → AI provider: requests synthesis
- AI provider → Ollama service: calls locally
- Chrome extension → Meeting secretary: streams audio
- Local companion → Ollama service: proxies requests
- Schedule → Google Calendar: syncs events
