# abhinaytharu/quicksearch architecture

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

- Interactive diagram: https://gitdiagram.com/abhinaytharu/quicksearch
- Repository: https://github.com/abhinaytharu/quicksearch

## Overview

QuickSearch’s documented primary product is a local-first Windows hotkey launcher: summon it, filter favorite or custom sites, then open a result or the selected default. The tree also contains substantial browser, file-search, extension, sync, and SDK capabilities beyond the short README. Those are represented as distinct subsystems, but links among unsampled modules are omitted; edges cite the README or shown source references.

Main entry points: [`quicksearch-launcher/src/routes/+page.svelte`](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src/routes/%2Bpage.svelte) (Search interface), [`quicksearch-launcher/src-tauri/src/browser/service.rs`](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/service.rs) (Browser service), [`quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs`](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs) (Encrypted sync), [`quicksearch-launcher/src-tauri/src/commands/shortcuts.rs`](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/commands/shortcuts.rs) (Global hotkey)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_launcher["Site launcher"]
  node_hotkey["Global hotkey<br/>[shortcuts.rs]"]
  node_launcher_ui["Search interface<br/>[+page.svelte]"]
  node_site_commands["Site management<br/>[sites.rs]"]
  node_site_state[("Saved sites<br/>[shortcuts.rs]")]
end

subgraph group_native["Native capabilities"]
  node_app_service["Application service<br/>[service.rs]"]
  node_file_query["File search<br/>[query.rs]"]
end

subgraph group_extensions["Extension platform"]
  node_ext_runtime["Extension runtime<br/>[manager.rs]"]
  node_ext_tray["Extension tray<br/>[manager.rs]"]
  node_sdk_worker["Worker SDK<br/>[worker.ts]"]
  node_sdk_storage["Storage proxy"]
  node_sdk_base["Service proxy base"]
  node_ipc_broker["Message broker<br/>[MessageBroker.ts]"]
end

subgraph group_integrations["Browser and sync"]
  node_browser_service["Browser service<br/>[service.rs]"]
  node_browser_bridge["Browser bridge<br/>[server.rs]"]
  node_browser_cache[("Tab cache<br/>[cache.rs]")]
  node_auth_client["Auth API client<br/>[api_client.rs]"]
  node_sync_orchestrator["Sync orchestration<br/>[orchestrator.rs]"]
  node_sync_e2ee["Encrypted sync<br/>[service.rs]"]
  node_sync_state[("Sync state")]
end

node_user(("User"))

node_user -->|"presses"| node_hotkey
node_hotkey -->|"summons"| node_launcher_ui
node_user -->|"types query"| node_launcher_ui
node_launcher_ui -->|"filters sites"| node_site_state
node_user -->|"manages sites"| node_site_commands
node_user -->|"opens selected"| node_site_state
node_browser_service -->|"uses bridge"| node_browser_bridge
node_browser_service -->|"reads tabs"| node_browser_cache
node_browser_bridge -->|"uses cache"| node_browser_cache
node_sync_e2ee -->|"uses state"| node_sync_state
node_sync_e2ee -->|"calls API"| node_auth_client
node_sdk_worker -->|"creates proxy"| node_sdk_storage
node_sdk_storage -->|"extends"| node_sdk_base
node_sdk_base -->|"invokes through"| node_ipc_broker

click node_hotkey "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/commands/shortcuts.rs"
click node_launcher_ui "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src/routes/%2Bpage.svelte"
click node_site_commands "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/commands/sites.rs"
click node_site_state "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/storage/shortcuts.rs"
click node_app_service "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/application/service.rs"
click node_file_query "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/file_index/query.rs"
click node_browser_service "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/service.rs"
click node_browser_bridge "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/bridge/server.rs"
click node_browser_cache "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/bridge/cache.rs"
click node_auth_client "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/auth/api_client.rs"
click node_sync_orchestrator "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/sync/orchestrator.rs"
click node_sync_e2ee "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs"
click node_sync_state "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/storage/cloud_sync_state.rs"
click node_ext_runtime "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/extensions/extension_runtime/manager.rs"
click node_ext_tray "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/extension_tray/manager.rs"
click node_sdk_worker "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/worker.ts"
click node_sdk_storage "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/services/StorageServiceProxy.ts"
click node_sdk_base "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/services/BaseServiceProxy.ts"
click node_ipc_broker "https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/ipc/MessageBroker.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_hotkey,node_launcher_ui,node_site_commands,node_site_state,node_user toneBlue
class node_app_service,node_file_query toneAmber
class node_ext_runtime,node_ext_tray,node_sdk_worker,node_sdk_storage,node_sdk_base,node_ipc_broker toneMint
class node_browser_service,node_browser_bridge,node_browser_cache,node_auth_client,node_sync_orchestrator,node_sync_e2ee,node_sync_state toneRose
```

## Components

### Site launcher

- [Global hotkey](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/commands/shortcuts.rs): `quicksearch-launcher/src-tauri/src/commands/shortcuts.rs`
- [Search interface](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src/routes/%2Bpage.svelte): `quicksearch-launcher/src/routes/+page.svelte`
- [Site management](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/commands/sites.rs): `quicksearch-launcher/src-tauri/src/commands/sites.rs`
- [Saved sites](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/storage/shortcuts.rs): `quicksearch-launcher/src-tauri/src/storage/shortcuts.rs`

### Native capabilities

- [Application service](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/application/service.rs): `quicksearch-launcher/src-tauri/src/application/service.rs`
- [File search](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/file_index/query.rs): `quicksearch-launcher/src-tauri/src/file_index/query.rs`

### Extension platform

- [Extension runtime](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/extensions/extension_runtime/manager.rs): `quicksearch-launcher/src-tauri/src/extensions/extension_runtime/manager.rs`
- [Extension tray](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/extension_tray/manager.rs): `quicksearch-launcher/src-tauri/src/extension_tray/manager.rs`
- [Worker SDK](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/worker.ts): `quicksearch-sdk/src/worker.ts`
- [Storage proxy](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/services/StorageServiceProxy.ts): `quicksearch-sdk/src/services/StorageServiceProxy.ts`
- [Service proxy base](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/services/BaseServiceProxy.ts): `quicksearch-sdk/src/services/BaseServiceProxy.ts`
- [Message broker](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-sdk/src/ipc/MessageBroker.ts): `quicksearch-sdk/src/ipc/MessageBroker.ts`

### Browser and sync

- [Browser service](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/service.rs): `quicksearch-launcher/src-tauri/src/browser/service.rs`
- [Browser bridge](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/bridge/server.rs): `quicksearch-launcher/src-tauri/src/browser/bridge/server.rs`
- [Tab cache](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/browser/bridge/cache.rs): `quicksearch-launcher/src-tauri/src/browser/bridge/cache.rs`
- [Auth API client](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/auth/api_client.rs): `quicksearch-launcher/src-tauri/src/auth/api_client.rs`
- [Sync orchestration](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/sync/orchestrator.rs): `quicksearch-launcher/src-tauri/src/sync/orchestrator.rs`
- [Encrypted sync](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs): `quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs`
- [Sync state](https://github.com/abhinaytharu/quicksearch/blob/main/quicksearch-launcher/src-tauri/src/storage/cloud_sync_state.rs): `quicksearch-launcher/src-tauri/src/storage/cloud_sync_state.rs`

### Other components

- **User**

## Connections

- User → Global hotkey: presses
- Global hotkey → Search interface: summons
- User → Search interface: types query
- Search interface → Saved sites: filters sites
- User → Site management: manages sites
- User → Saved sites: opens selected
- Browser service → Browser bridge: uses bridge (evidence: `quicksearch-launcher/src-tauri/src/browser/service.rs`)
- Browser service → Tab cache: reads tabs (evidence: `quicksearch-launcher/src-tauri/src/browser/service.rs`)
- Browser bridge → Tab cache: uses cache (evidence: `quicksearch-launcher/src-tauri/src/browser/bridge/server.rs`)
- Encrypted sync → Sync state: uses state (evidence: `quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs`)
- Encrypted sync → Auth API client: calls API (evidence: `quicksearch-launcher/src-tauri/src/sync/e2ee/service.rs`)
- Worker SDK → Storage proxy: creates proxy (evidence: `quicksearch-sdk/src/worker.ts`)
- Storage proxy → Service proxy base: extends (evidence: `quicksearch-sdk/src/services/StorageServiceProxy.ts`)
- Service proxy base → Message broker: invokes through (evidence: `quicksearch-sdk/src/services/BaseServiceProxy.ts`)
