# ved-padmawar/nexusvoice architecture

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

- Interactive diagram: https://gitdiagram.com/ved-padmawar/nexusvoice
- Repository: https://github.com/ved-padmawar/nexusvoice

## Overview

NexusVoice is a local-first desktop dictation app: users speak through push-to-talk or dictation mode, speech is transcribed locally, optionally corrected/formatted, then pasted into the focused app and saved to history. The graph separates the React UI, Tauri command boundary, capture/transcription pipeline, and supporting state/integrations. README capabilities are included where source excerpts were unavailable; those links follow documented behavior rather than inspected call sites.

Main entry points: [`src-tauri/src/transcription/service.rs`](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/transcription/service.rs) (Transcription Service), [`src/App.tsx`](https://github.com/ved-padmawar/nexusvoice/blob/main/src/App.tsx) (App Shell), [`src-tauri/src/commands/mod.rs`](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/mod.rs) (Command API), [`src-tauri/src/database/repositories/mod.rs`](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/database/repositories/mod.rs) (Transcript And Dictionary Repositories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Desktop Interface"]
  node_app["App Shell<br/>[App.tsx]"]
  node_dashboard["Dashboard<br/>[Dashboard.tsx]"]
  node_dictionaryui["Dictionary UI<br/>[Dictionary.tsx]"]
  node_settings["Settings<br/>[Settings.tsx]"]
  node_pill["Recording Pill<br/>[PillApp.tsx]"]
  node_store[("UI State<br/>[useAppStore.ts]")]
end

subgraph group_bridge["Tauri Commands"]
  node_commands["Command API<br/>[mod.rs]"]
  node_hotkey["Hotkey Handling<br/>[hotkey.rs]"]
  node_injectioncmd["Injection Commands<br/>[injection.rs]"]
end

subgraph group_capture["Capture And Decode"]
  node_capture["Audio Capture<br/>[capture.rs]"]
  node_preprocess["Audio Preparation<br/>[mod.rs]"]
  node_transcription["Transcription Service<br/>[service.rs]"]
  node_streaming["Streaming Decode<br/>[streaming.rs]"]
  node_engine["Local Model Engine<br/>[engine.rs]"]
  node_models["Model Catalog And Download<br/>[downloader.rs]"]
end

subgraph group_text["Text And Delivery"]
  node_dictionary["Dictionary Correction"]
  node_formatter["Smart Formatting<br/>[client.rs]"]
  node_injection["Text Injection<br/>[mod.rs]"]
end

subgraph group_state["Local State"]
  node_repositories["Transcript And Dictionary Repositories<br/>[mod.rs]"]
  node_sqlite[("SQLite<br/>[connection.rs]")]
  node_focus["Focused-App Detection<br/>[mod.rs]"]
end

node_user(("User"))
node_target["Focused App"]
node_mic(("Microphone"))
node_modelhost["Hugging Face"]
node_llmservice["Formatter Endpoint"]

node_user -->|"navigates"| node_app
node_app -->|"routes to"| node_dashboard
node_app -->|"routes to"| node_dictionaryui
node_app -->|"routes to"| node_settings
node_app -->|"shows window"| node_pill
node_dashboard -->|"requests history"| node_commands
node_dictionaryui -->|"manages entries"| node_commands
node_settings -->|"configures"| node_commands
node_pill -->|"resizes overlay"| node_commands
node_app -->|"reads state"| node_store
node_app -->|"invokes"| node_commands
node_user -->|"presses hotkey"| node_hotkey
node_hotkey -->|"starts and stops"| node_capture
node_mic -->|"supplies audio"| node_capture
node_capture -->|"buffers audio"| node_transcription
node_transcription -->|"prepares samples"| node_preprocess
node_transcription -->|"streams audio"| node_streaming
node_streaming -->|"decodes passes"| node_engine
node_transcription -->|"decodes tail"| node_engine
node_models -.->|"downloads models"| node_modelhost
node_transcription -->|"corrects text"| node_dictionary
node_transcription -->|"gets destination"| node_focus
node_transcription -.->|"formats optionally"| node_formatter
node_formatter -.->|"sends request"| node_llmservice
node_transcription -->|"delivers text"| node_injection
node_injectioncmd -->|"dispatches injection"| node_injection
node_injection -->|"pastes text"| node_target
node_transcription -->|"saves transcript"| node_repositories
node_dashboard -->|"loads history"| node_repositories
node_dictionaryui -->|"reads and writes"| node_repositories
node_repositories -->|"queries and persists"| node_sqlite

click node_app "https://github.com/ved-padmawar/nexusvoice/blob/main/src/App.tsx"
click node_dashboard "https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Dashboard.tsx"
click node_dictionaryui "https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Dictionary.tsx"
click node_settings "https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Settings.tsx"
click node_pill "https://github.com/ved-padmawar/nexusvoice/blob/main/src/pill/PillApp.tsx"
click node_store "https://github.com/ved-padmawar/nexusvoice/blob/main/src/store/useAppStore.ts"
click node_commands "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/mod.rs"
click node_hotkey "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/hotkey.rs"
click node_injectioncmd "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/injection.rs"
click node_capture "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/audio/capture.rs"
click node_preprocess "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/preprocess/mod.rs"
click node_transcription "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/transcription/service.rs"
click node_streaming "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/transcribe/streaming.rs"
click node_engine "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/inference/engine.rs"
click node_models "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/inference/downloader.rs"
click node_dictionary "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/postprocess/dictionary_engine.rs"
click node_formatter "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/llm/client.rs"
click node_injection "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/injection/mod.rs"
click node_repositories "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/database/repositories/mod.rs"
click node_sqlite "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/database/connection.rs"
click node_focus "https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/focus/mod.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,node_dashboard,node_dictionaryui,node_settings,node_pill,node_store,node_user toneBlue
class node_commands,node_hotkey,node_injectioncmd toneAmber
class node_capture,node_preprocess,node_transcription,node_streaming,node_engine,node_models toneMint
class node_dictionary,node_formatter,node_injection toneRose
class node_repositories,node_sqlite,node_focus,node_target,node_mic,node_modelhost,node_llmservice toneIndigo
```

## Components

### Desktop Interface

- [App Shell](https://github.com/ved-padmawar/nexusvoice/blob/main/src/App.tsx): `src/App.tsx`
- [Dashboard](https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Dashboard.tsx): `src/pages/Dashboard.tsx`
- [Dictionary UI](https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Dictionary.tsx): `src/pages/Dictionary.tsx`
- [Settings](https://github.com/ved-padmawar/nexusvoice/blob/main/src/pages/Settings.tsx): `src/pages/Settings.tsx`
- [Recording Pill](https://github.com/ved-padmawar/nexusvoice/blob/main/src/pill/PillApp.tsx): `src/pill/PillApp.tsx`
- [UI State](https://github.com/ved-padmawar/nexusvoice/blob/main/src/store/useAppStore.ts): `src/store/useAppStore.ts`

### Tauri Commands

- [Command API](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/mod.rs): `src-tauri/src/commands/mod.rs`
- [Hotkey Handling](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/hotkey.rs): `src-tauri/src/commands/hotkey.rs`
- [Injection Commands](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/commands/injection.rs): `src-tauri/src/commands/injection.rs`

### Capture And Decode

- [Audio Capture](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/audio/capture.rs): `src-tauri/src/audio/capture.rs`
- [Audio Preparation](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/preprocess/mod.rs): `src-tauri/src/preprocess/mod.rs`
- [Transcription Service](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/transcription/service.rs): `src-tauri/src/transcription/service.rs`
- [Streaming Decode](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/transcribe/streaming.rs): `src-tauri/src/transcribe/streaming.rs`
- [Local Model Engine](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/inference/engine.rs): `src-tauri/src/inference/engine.rs`
- [Model Catalog And Download](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/inference/downloader.rs): `src-tauri/src/inference/downloader.rs`

### Text And Delivery

- [Dictionary Correction](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/postprocess/dictionary_engine.rs): `src-tauri/src/postprocess/dictionary_engine.rs`
- [Smart Formatting](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/llm/client.rs): `src-tauri/src/llm/client.rs`
- [Text Injection](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/injection/mod.rs): `src-tauri/src/injection/mod.rs`

### Local State

- [Transcript And Dictionary Repositories](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/database/repositories/mod.rs): `src-tauri/src/database/repositories/mod.rs`
- [SQLite](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/database/connection.rs): `src-tauri/src/database/connection.rs`
- [Focused-App Detection](https://github.com/ved-padmawar/nexusvoice/blob/main/src-tauri/src/focus/mod.rs): `src-tauri/src/focus/mod.rs`

### Other components

- **User**
- **Focused App**
- **Microphone**
- **Hugging Face**
- **Formatter Endpoint**

## Connections

- User → App Shell: navigates
- App Shell → Dashboard: routes to
- App Shell → Dictionary UI: routes to
- App Shell → Settings: routes to
- App Shell → Recording Pill: shows window
- Dashboard → Command API: requests history
- Dictionary UI → Command API: manages entries
- Settings → Command API: configures
- Recording Pill → Command API: resizes overlay
- App Shell → UI State: reads state
- App Shell → Command API: invokes
- User → Hotkey Handling: presses hotkey
- Hotkey Handling → Audio Capture: starts and stops
- Microphone → Audio Capture: supplies audio
- Audio Capture → Transcription Service: buffers audio
- Transcription Service → Audio Preparation: prepares samples
- Transcription Service → Streaming Decode: streams audio
- Streaming Decode → Local Model Engine: decodes passes
- Transcription Service → Local Model Engine: decodes tail
- Model Catalog And Download → Hugging Face: downloads models
- Transcription Service → Dictionary Correction: corrects text
- Transcription Service → Focused-App Detection: gets destination
- Transcription Service → Smart Formatting: formats optionally
- Smart Formatting → Formatter Endpoint: sends request
- Transcription Service → Text Injection: delivers text
- Injection Commands → Text Injection: dispatches injection
- Text Injection → Focused App: pastes text
- Transcription Service → Transcript And Dictionary Repositories: saves transcript
- Dashboard → Transcript And Dictionary Repositories: loads history
- Dictionary UI → Transcript And Dictionary Repositories: reads and writes
- Transcript And Dictionary Repositories → SQLite: queries and persists
