# qishibo/anotherredisdesktopmanager architecture

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

- Interactive diagram: https://gitdiagram.com/qishibo/anotherredisdesktopmanager
- Repository: https://github.com/qishibo/anotherredisdesktopmanager

## Overview

Another Redis Desktop Manager is a cross-platform GUI for managing Redis-compatible databases. Users configure or select a connection, connect to a server, browse keys, open a key to inspect or edit its type-specific contents, and run commands through the CLI. The interface also exposes operational views and utilities such as slow logs, memory analysis, command history, custom formatters, and binary decoders. The sampled code confirms the app shell, Redis client behavior, vector commands, and protobuf persistence; several other feature links are omitted where their wiring was not shown.

Main entry points: [`src/App.vue`](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/App.vue) (App shell), [`src/redisClient.js`](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/redisClient.js) (Redis client), [`src/components/Tabs.vue`](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Tabs.vue) (Workspace tabs), [`src/storage.js`](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/storage.js) (Local preferences)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application shell"]
  node_main["Vue entry<br/>[main.js]"]
  node_appview["App shell<br/>[App.vue]"]
  node_tabs["Workspace tabs<br/>[Tabs.vue]"]
end

subgraph group_connections["Connections and commands"]
  node_aside["Connection sidebar<br/>[Aside.vue]"]
  node_connectionsview["Connections<br/>[Connections.vue]"]
  node_client["Redis client<br/>[redisClient.js]"]
  node_cli["Redis CLI<br/>[CliContent.vue]"]
  node_commandlog["Command history<br/>[CommandLog.vue]"]
end

subgraph group_data["Key management"]
  node_keylist["Key browser"]
  node_keydetail["Key detail<br/>[KeyDetail.vue]"]
  node_keycontents["Typed key views"]
end

subgraph group_tools["Inspection and preferences"]
  node_slowlog["Slow log<br/>[SlowLog.vue]"]
  node_memory["Memory analysis<br/>[MemoryAnalysis.vue]"]
  node_formatter["Custom formatter"]
  node_viewers["Value viewers<br/>[ViewerProtobuf.vue]"]
  node_settings["Settings<br/>[Setting.vue]"]
  node_storage["Local preferences<br/>[storage.js]"]
end

subgraph group_platform["Desktop integration"]
  node_addon["App add-ons<br/>[addon.js]"]
  node_electron["Electron main<br/>[electron-main.js]"]
  node_update["Update UI<br/>[UpdateCheck.vue]"]
end

node_user(("Redis operator"))
node_redis[("Redis server")]

node_user -->|"uses"| node_appview
node_main -->|"mounts"| node_appview
node_appview -->|"renders"| node_aside
node_appview -->|"renders"| node_tabs
node_appview -->|"renders"| node_update
node_appview -->|"initializes"| node_addon
node_connectionsview -->|"connects via"| node_client
node_client -->|"issues commands"| node_redis
node_keycontents -->|"calls Redis"| node_client
node_keylist -->|"opens key"| node_keydetail
node_tabs -->|"hosts"| node_keylist
node_tabs -->|"hosts"| node_keydetail
node_cli -->|"runs commands"| node_client
node_commandlog -.->|"logs commands"| node_client
node_slowlog -.->|"reads server"| node_client
node_memory -.->|"analyzes server"| node_client
node_formatter -.->|"persists formatters"| node_storage
node_viewers -->|"loads bindings"| node_storage
node_settings -.->|"reads settings"| node_storage
node_appview -.->|"runs in"| node_electron

click node_main "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/main.js"
click node_appview "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/App.vue"
click node_aside "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/Aside.vue"
click node_connectionsview "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Connections.vue"
click node_client "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/redisClient.js"
click node_tabs "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Tabs.vue"
click node_keylist "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/KeyListVirtualTree.vue"
click node_keydetail "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/KeyDetail.vue"
click node_keycontents "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/contents/KeyContentVector.vue"
click node_cli "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CliContent.vue"
click node_commandlog "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CommandLog.vue"
click node_slowlog "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/SlowLog.vue"
click node_memory "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/MemoryAnalysis.vue"
click node_formatter "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CustomFormatter.vue"
click node_viewers "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/viewers/ViewerProtobuf.vue"
click node_settings "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Setting.vue"
click node_storage "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/storage.js"
click node_addon "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/addon.js"
click node_electron "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/pack/electron/electron-main.js"
click node_update "https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/UpdateCheck.vue"

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_main,node_appview,node_tabs toneBlue
class node_aside,node_connectionsview,node_client,node_cli,node_commandlog,node_user,node_redis toneAmber
class node_keylist,node_keydetail,node_keycontents toneMint
class node_slowlog,node_memory,node_formatter,node_viewers,node_settings,node_storage toneRose
class node_addon,node_electron,node_update toneIndigo
```

## Components

### Application shell

- [Vue entry](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/main.js): `src/main.js`
- [App shell](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/App.vue): `src/App.vue`
- [Workspace tabs](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Tabs.vue): `src/components/Tabs.vue`

### Connections and commands

- [Connection sidebar](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/Aside.vue): `src/Aside.vue`
- [Connections](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Connections.vue): `src/components/Connections.vue`
- [Redis client](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/redisClient.js): `src/redisClient.js`
- [Redis CLI](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CliContent.vue): `src/components/CliContent.vue`
- [Command history](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CommandLog.vue): `src/components/CommandLog.vue`

### Key management

- [Key browser](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/KeyListVirtualTree.vue): `src/components/KeyListVirtualTree.vue`
- [Key detail](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/KeyDetail.vue): `src/components/KeyDetail.vue`
- [Typed key views](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/contents/KeyContentVector.vue): `src/components/contents/KeyContentVector.vue`

### Inspection and preferences

- [Slow log](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/SlowLog.vue): `src/components/SlowLog.vue`
- [Memory analysis](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/MemoryAnalysis.vue): `src/components/MemoryAnalysis.vue`
- [Custom formatter](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/CustomFormatter.vue): `src/components/CustomFormatter.vue`
- [Value viewers](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/viewers/ViewerProtobuf.vue): `src/components/viewers/ViewerProtobuf.vue`
- [Settings](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/Setting.vue): `src/components/Setting.vue`
- [Local preferences](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/storage.js): `src/storage.js`

### Desktop integration

- [App add-ons](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/addon.js): `src/addon.js`
- [Electron main](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/pack/electron/electron-main.js): `pack/electron/electron-main.js`
- [Update UI](https://github.com/qishibo/anotherredisdesktopmanager/blob/master/src/components/UpdateCheck.vue): `src/components/UpdateCheck.vue`

### Other components

- **Redis operator**
- **Redis server**

## Connections

- Redis operator → App shell: uses
- Vue entry → App shell: mounts
- App shell → Connection sidebar: renders
- App shell → Workspace tabs: renders
- App shell → Update UI: renders
- App shell → App add-ons: initializes
- Connections → Redis client: connects via
- Redis client → Redis server: issues commands
- Typed key views → Redis client: calls Redis
- Key browser → Key detail: opens key
- Workspace tabs → Key browser: hosts
- Workspace tabs → Key detail: hosts
- Redis CLI → Redis client: runs commands
- Command history → Redis client: logs commands
- Slow log → Redis client: reads server
- Memory analysis → Redis client: analyzes server
- Custom formatter → Local preferences: persists formatters
- Value viewers → Local preferences: loads bindings
- Settings → Local preferences: reads settings
- App shell → Electron main: runs in
