# zackriya-solutions/meetily architecture

> Architecture diagram of the GitHub repository zackriya-solutions/meetily, 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/zackriya-solutions/meetily
- Repository: https://github.com/zackriya-solutions/meetily

## Overview

Meetily is a desktop meeting assistant: users record or import audio, receive a local transcript, save meeting data, and can generate an AI summary. The graph follows the documented capture-to-transcript-to-summary workflow and includes local model management, persistence, and provider integrations. The README documents these capabilities; sampled source confirms selected audio, transcription, summary-client, storage, and model-manager behavior. Other edges are omitted where implementation details were not sampled.

Main entry points: [`frontend/src/app/page.tsx`](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/app/page.tsx) (Meeting interface), [`frontend/src-tauri/src/summary/llm_client.rs`](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/llm_client.rs) (LLM client), [`frontend/src-tauri/src/lib.rs`](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs) (Desktop commands), [`frontend/src-tauri/src/audio/transcription/engine.rs`](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/transcription/engine.rs) (Transcription engine)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["Desktop experience"]
  node_meeting_ui["Meeting interface<br/>[page.tsx]"]
  node_meeting_controls["Recording controls"]
  node_meeting_details["Meeting details"]
  node_tauri_commands["Desktop commands<br/>[lib.rs]"]
  node_summary_ui["Summary interface<br/>[SummaryPanel.tsx]"]
end

subgraph group_audio["Audio and transcription"]
  node_capture["Audio capture<br/>[mod.rs]"]
  node_audio_pipeline["Audio mixing<br/>[pipeline.rs]"]
  node_recording["Recording lifecycle"]
  node_import_audio["Audio import<br/>[import.rs]"]
  node_transcription["Transcription engine<br/>[engine.rs]"]
  node_whisper["Whisper engine<br/>[whisper_engine.rs]"]
  node_parakeet["Parakeet engine<br/>[parakeet_engine.rs]"]
  node_model_manager["Model management<br/>[model_manager.rs]"]
end

subgraph group_summaries["Summary generation"]
  node_summary_service["Summary processor<br/>[service.rs]"]
  node_summary_client["LLM client<br/>[llm_client.rs]"]
end

subgraph group_persistence["Local persistence"]
  node_meeting_storage["Meeting storage API<br/>[storageService.ts]"]
  node_database_commands["Database commands<br/>[commands.rs]"]
  node_database[("SQLite database<br/>[manager.rs]")]
end

subgraph group_integrations["AI integrations"]
  node_ollama["Ollama provider<br/>[ollama.rs]"]
  node_cloud_providers["Cloud AI providers<br/>[anthropic.rs]"]
  node_openai_compat["OpenAI-compatible API<br/>[openai.rs]"]
end

node_user(("Meeting user"))

node_user -->|"uses"| node_meeting_ui
node_meeting_ui -->|"opens recording"| node_meeting_controls
node_meeting_controls -->|"invokes"| node_tauri_commands
node_tauri_commands -->|"dispatches"| node_recording
node_recording -->|"starts capture"| node_capture
node_recording -->|"processes audio"| node_audio_pipeline
node_capture -->|"streams audio"| node_audio_pipeline
node_meeting_ui -->|"imports audio"| node_import_audio
node_import_audio -->|"requests transcription"| node_transcription
node_audio_pipeline -->|"provides audio"| node_transcription
node_transcription -->|"dispatches"| node_whisper
node_transcription -->|"dispatches"| node_parakeet
node_meeting_ui -->|"requests meetings"| node_meeting_storage
node_meeting_storage -->|"invokes"| node_database_commands
node_database_commands -->|"reads and writes"| node_database
node_meeting_details -->|"loads meeting"| node_meeting_storage
node_meeting_details -->|"shows summary"| node_summary_ui
node_summary_ui -->|"invokes"| node_tauri_commands
node_tauri_commands -->|"dispatches"| node_summary_service
node_summary_service -->|"requests completion"| node_summary_client
node_summary_service -->|"stores summary"| node_database
node_summary_client -.->|"sends request"| node_ollama
node_summary_client -.->|"sends request"| node_cloud_providers
node_summary_client -.->|"sends request"| node_openai_compat
node_meeting_ui -->|"manages models"| node_model_manager

click node_meeting_ui "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/app/page.tsx"
click node_meeting_controls "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/RecordingControls.tsx"
click node_meeting_details "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/MeetingDetails/MeetingDetailsSplitView.tsx"
click node_tauri_commands "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs"
click node_capture "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/capture/mod.rs"
click node_audio_pipeline "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/pipeline.rs"
click node_recording "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_commands.rs"
click node_import_audio "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/import.rs"
click node_transcription "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/transcription/engine.rs"
click node_whisper "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs"
click node_parakeet "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs"
click node_model_manager "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/summary_engine/model_manager.rs"
click node_meeting_storage "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/services/storageService.ts"
click node_database_commands "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/database/commands.rs"
click node_database "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/database/manager.rs"
click node_summary_ui "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/MeetingDetails/SummaryPanel.tsx"
click node_summary_service "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/service.rs"
click node_summary_client "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/llm_client.rs"
click node_ollama "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/ollama/ollama.rs"
click node_cloud_providers "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/anthropic/anthropic.rs"
click node_openai_compat "https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/openai/openai.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_meeting_ui,node_meeting_controls,node_meeting_details,node_tauri_commands,node_summary_ui,node_user toneBlue
class node_capture,node_audio_pipeline,node_recording,node_import_audio,node_transcription,node_whisper,node_parakeet,node_model_manager toneAmber
class node_summary_service,node_summary_client toneMint
class node_meeting_storage,node_database_commands,node_database toneRose
class node_ollama,node_cloud_providers,node_openai_compat toneIndigo
```

## Components

### Desktop experience

- [Meeting interface](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/app/page.tsx): `frontend/src/app/page.tsx`
- [Recording controls](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/RecordingControls.tsx): `frontend/src/components/RecordingControls.tsx`
- [Meeting details](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/MeetingDetails/MeetingDetailsSplitView.tsx): `frontend/src/components/MeetingDetails/MeetingDetailsSplitView.tsx`
- [Desktop commands](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/lib.rs): `frontend/src-tauri/src/lib.rs`
- [Summary interface](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/components/MeetingDetails/SummaryPanel.tsx): `frontend/src/components/MeetingDetails/SummaryPanel.tsx`

### Audio and transcription

- [Audio capture](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/capture/mod.rs): `frontend/src-tauri/src/audio/capture/mod.rs`
- [Audio mixing](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/pipeline.rs): `frontend/src-tauri/src/audio/pipeline.rs`
- [Recording lifecycle](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/recording_commands.rs): `frontend/src-tauri/src/audio/recording_commands.rs`
- [Audio import](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/import.rs): `frontend/src-tauri/src/audio/import.rs`
- [Transcription engine](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/audio/transcription/engine.rs): `frontend/src-tauri/src/audio/transcription/engine.rs`
- [Whisper engine](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/whisper_engine/whisper_engine.rs): `frontend/src-tauri/src/whisper_engine/whisper_engine.rs`
- [Parakeet engine](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs): `frontend/src-tauri/src/parakeet_engine/parakeet_engine.rs`
- [Model management](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/summary_engine/model_manager.rs): `frontend/src-tauri/src/summary/summary_engine/model_manager.rs`

### Summary generation

- [Summary processor](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/service.rs): `frontend/src-tauri/src/summary/service.rs`
- [LLM client](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/summary/llm_client.rs): `frontend/src-tauri/src/summary/llm_client.rs`

### Local persistence

- [Meeting storage API](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src/services/storageService.ts): `frontend/src/services/storageService.ts`
- [Database commands](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/database/commands.rs): `frontend/src-tauri/src/database/commands.rs`
- [SQLite database](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/database/manager.rs): `frontend/src-tauri/src/database/manager.rs`

### AI integrations

- [Ollama provider](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/ollama/ollama.rs): `frontend/src-tauri/src/ollama/ollama.rs`
- [Cloud AI providers](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/anthropic/anthropic.rs): `frontend/src-tauri/src/anthropic/anthropic.rs`
- [OpenAI-compatible API](https://github.com/zackriya-solutions/meetily/blob/main/frontend/src-tauri/src/openai/openai.rs): `frontend/src-tauri/src/openai/openai.rs`

### Other components

- **Meeting user**

## Connections

- Meeting user → Meeting interface: uses
- Meeting interface → Recording controls: opens recording
- Recording controls → Desktop commands: invokes
- Desktop commands → Recording lifecycle: dispatches
- Recording lifecycle → Audio capture: starts capture
- Recording lifecycle → Audio mixing: processes audio
- Audio capture → Audio mixing: streams audio
- Meeting interface → Audio import: imports audio
- Audio import → Transcription engine: requests transcription
- Audio mixing → Transcription engine: provides audio
- Transcription engine → Whisper engine: dispatches
- Transcription engine → Parakeet engine: dispatches
- Meeting interface → Meeting storage API: requests meetings
- Meeting storage API → Database commands: invokes
- Database commands → SQLite database: reads and writes
- Meeting details → Meeting storage API: loads meeting
- Meeting details → Summary interface: shows summary
- Summary interface → Desktop commands: invokes
- Desktop commands → Summary processor: dispatches
- Summary processor → LLM client: requests completion
- Summary processor → SQLite database: stores summary
- LLM client → Ollama provider: sends request
- LLM client → Cloud AI providers: sends request
- LLM client → OpenAI-compatible API: sends request
- Meeting interface → Model management: manages models
