# redis/redisdesktopmanager architecture

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

- Interactive diagram: https://gitdiagram.com/redis/redisdesktopmanager
- Repository: https://github.com/redis/redisdesktopmanager

## Overview

RESP.app is a Qt/QML desktop GUI for working with Redis. The main workflow starts with configuring or selecting a connection, then browsing databases and keys and opening values for inspection or editing. The application also provides a command console, server statistics, bulk key operations, and embedded or remote data formatters. The sampled sources show application wiring, connection management, database browsing, bulk-operation dispatch, and remote formatter requests; several other feature links are documented only by module presence and are left unverified.

Main entry points: [`src/app/app.cpp`](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/app.cpp) (Qt application), [`src/app/models/connectionsmanager.cpp`](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/connectionsmanager.cpp) (Connection manager), [`src/app/events.h`](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/events.h) (App events), [`src/modules/value-editor/tabsmodel.h`](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/value-editor/tabsmodel.h) (Value tabs)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Application"]
  node_application["Qt application<br/>[app.cpp]"]
  node_events["App events<br/>[events.h]"]
  node_config["App configuration<br/>[configmanager.cpp]"]
end

subgraph group_browse["Connections and Browsing"]
  node_connections["Connection manager"]
  node_connection_config["Connection settings<br/>[connectionconf.h]"]
  node_tree["Connection tree<br/>[model.cpp]"]
  node_database["Database browser<br/>[databaseitem.cpp]"]
  node_key_factory["Key factory<br/>[keyfactory.cpp]"]
end

subgraph group_tools["Developer Tools"]
  node_value_tabs["Value tabs<br/>[tabsmodel.h]"]
  node_console["Command console<br/>[consolemodel.cpp]"]
  node_stats["Server statistics"]
  node_bulk["Bulk operations"]
end

subgraph group_format["Value Formatting"]
  node_embedded["Embedded formatters"]
  node_python_formatters["Python formatters<br/>[base.py]"]
  node_remote_formatters["Remote formatters"]
end

node_user(("Redis user"))
node_redis[("Redis server")]
node_extension_api["Formatter API"]

node_user -->|"uses"| node_application
node_application -->|"creates"| node_connections
node_application -->|"wires"| node_events
node_application -->|"creates"| node_value_tabs
node_application -->|"creates"| node_console
node_application -->|"creates"| node_stats
node_application -->|"creates"| node_bulk
node_application -->|"creates"| node_embedded
node_application -->|"creates"| node_remote_formatters
node_connections -->|"loads and saves"| node_config
node_connections -->|"manages"| node_connection_config
node_connections -->|"creates items"| node_tree
node_connections -->|"tests connection"| node_redis
node_database -->|"loads keys"| node_redis
node_database -.->|"opens key"| node_key_factory
node_key_factory -.->|"creates key models"| node_value_tabs
node_events -->|"opens value tab"| node_value_tabs
node_events -->|"opens console"| node_console
node_events -->|"opens stats"| node_stats
node_bulk -.->|"runs operations"| node_redis
node_embedded -.->|"calls Python"| node_python_formatters
node_remote_formatters -->|"sends formatter requests"| node_extension_api

click node_application "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/app.cpp"
click node_events "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/events.h"
click node_config "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/configmanager.cpp"
click node_connections "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/connectionsmanager.cpp"
click node_connection_config "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/connectionconf.h"
click node_tree "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/connections-tree/model.cpp"
click node_database "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/connections-tree/items/databaseitem.cpp"
click node_key_factory "https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/key-models/keyfactory.cpp"
click node_value_tabs "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/value-editor/tabsmodel.h"
click node_console "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/console/consolemodel.cpp"
click node_stats "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/server-actions/serverstatsmodel.cpp"
click node_bulk "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/bulk-operations/bulkoperationsmanager.cpp"
click node_embedded "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/value-editor/embeddedformattersmanager.cpp"
click node_python_formatters "https://github.com/redis/redisdesktopmanager/blob/2022/src/py/formatters/base.py"
click node_remote_formatters "https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/extension-server/dataformattermanager.cpp"

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_application,node_events,node_config toneBlue
class node_connections,node_connection_config,node_tree,node_database,node_key_factory,node_user,node_redis toneAmber
class node_value_tabs,node_console,node_stats,node_bulk,node_extension_api toneMint
class node_embedded,node_python_formatters,node_remote_formatters toneRose
```

## Components

### Application

- [Qt application](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/app.cpp): `src/app/app.cpp`
- [App events](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/events.h): `src/app/events.h`
- [App configuration](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/configmanager.cpp): `src/app/models/configmanager.cpp`

### Connections and Browsing

- [Connection manager](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/connectionsmanager.cpp): `src/app/models/connectionsmanager.cpp`
- [Connection settings](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/connectionconf.h): `src/app/models/connectionconf.h`
- [Connection tree](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/connections-tree/model.cpp): `src/modules/connections-tree/model.cpp`
- [Database browser](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/connections-tree/items/databaseitem.cpp): `src/modules/connections-tree/items/databaseitem.cpp`
- [Key factory](https://github.com/redis/redisdesktopmanager/blob/2022/src/app/models/key-models/keyfactory.cpp): `src/app/models/key-models/keyfactory.cpp`

### Developer Tools

- [Value tabs](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/value-editor/tabsmodel.h): `src/modules/value-editor/tabsmodel.h`
- [Command console](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/console/consolemodel.cpp): `src/modules/console/consolemodel.cpp`
- [Server statistics](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/server-actions/serverstatsmodel.cpp): `src/modules/server-actions/serverstatsmodel.cpp`
- [Bulk operations](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/bulk-operations/bulkoperationsmanager.cpp): `src/modules/bulk-operations/bulkoperationsmanager.cpp`

### Value Formatting

- [Embedded formatters](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/value-editor/embeddedformattersmanager.cpp): `src/modules/value-editor/embeddedformattersmanager.cpp`
- [Python formatters](https://github.com/redis/redisdesktopmanager/blob/2022/src/py/formatters/base.py): `src/py/formatters/base.py`
- [Remote formatters](https://github.com/redis/redisdesktopmanager/blob/2022/src/modules/extension-server/dataformattermanager.cpp): `src/modules/extension-server/dataformattermanager.cpp`

### Other components

- **Redis user**
- **Redis server**
- **Formatter API**

## Connections

- Redis user → Qt application: uses (evidence: `README.md`)
- Qt application → Connection manager: creates (evidence: `src/app/app.cpp`)
- Qt application → App events: wires (evidence: `src/app/app.cpp`)
- Qt application → Value tabs: creates (evidence: `src/app/app.cpp`)
- Qt application → Command console: creates (evidence: `src/app/app.cpp`)
- Qt application → Server statistics: creates (evidence: `src/app/app.cpp`)
- Qt application → Bulk operations: creates (evidence: `src/app/app.cpp`)
- Qt application → Embedded formatters: creates (evidence: `src/app/app.cpp`)
- Qt application → Remote formatters: creates (evidence: `src/app/app.cpp`)
- Connection manager → App configuration: loads and saves (evidence: `src/app/models/connectionsmanager.cpp`)
- Connection manager → Connection settings: manages (evidence: `src/app/models/connectionsmanager.cpp`)
- Connection manager → Connection tree: creates items (evidence: `src/app/models/connectionsmanager.cpp`)
- Connection manager → Redis server: tests connection (evidence: `src/app/models/connectionsmanager.cpp`)
- Database browser → Redis server: loads keys (evidence: `src/modules/connections-tree/items/databaseitem.cpp`)
- Database browser → Key factory: opens key
- Key factory → Value tabs: creates key models
- App events → Value tabs: opens value tab (evidence: `src/app/app.cpp`)
- App events → Command console: opens console
- App events → Server statistics: opens stats
- Bulk operations → Redis server: runs operations
- Embedded formatters → Python formatters: calls Python
- Remote formatters → Formatter API: sends formatter requests (evidence: `src/modules/extension-server/dataformattermanager.cpp`)
