# rezwanul-haque/bytetable architecture

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

- Interactive diagram: https://gitdiagram.com/rezwanul-haque/bytetable
- Repository: https://github.com/rezwanul-haque/bytetable

## Overview

1. **Overall shape**
   ByteTable is a **desktop application** built as a **Tauri 2 shell** with a **Rust backend** and a **React + TypeScript frontend**. The app runs locally only; all database access happens in the Rust side, while the webview is responsible for UI, state, and user interaction.

2. **Primary process boundary**
   The most important architectural boundary is between **renderer** and **core**. In the renderer (`src/`), feature modules call typed API wrappers that invoke Rust commands. In the core (`src-tauri/src/`), Tauri command handlers perform the actual I/O, business rules, and engine-specific logic. This boundary is also security-sensitive: the renderer sees **opaque connection ids**, not raw secrets or driver credentials.

3. **Renderer composition**
   The UI is organized by **feature slices** rather than by technical layer. `src/features/*` contains the app’s main screens: workspaces, SQL browsing, Redis browsing, DynamoDB browsing, MongoDB browsing, Cassandra browsing, settings/preferences, schema maps, import/export, generate-data, saved queries, console/terminal, updater, and connection management. `src/shared/*` holds cross-cutting UI primitives, themes, and shared API/types.

4. **Workspace shell**
   The app’s main interaction model is **multiple workspaces in one window**. The workspace shell provides the left rail, sidebar, tab bar, status bar, command palette, and docked terminal panel. Each workspace maintains its own connection context and tab state, so the UI is not a single global browser; it is a multi-session desktop workspace.

5. **SQL subsystem**
   The relational path covers **SQLite, MySQL, and PostgreSQL**. On the renderer side this includes the data grid, SQL editor, filters, structure view, inline cell editing, foreign-key peek, column insights, explain panel, export dialogs, schema map, and mutation flows. On the Rust side, engine adapters under `src-tauri/src/engines/{sqlite,mysql,postgres}` provide the actual database access and type mapping.

6. **Non-relational engine subsystems**
   Each non-SQL engine has its own purpose-built surface rather than being forced into the SQL grid model:
   - **Redis**: keyspace browser with db switching, SCAN-based listing, type-aware value editors, and dashboard.
   - **DynamoDB**: table-centric document/single-table workflow with scan/query, PartiQL, item editing, import/export, and schema map.
   - **MongoDB**: collection/document workflow with find, aggregation pipeline, JSON editor, explain, shell, structure, and schema map.
   - **Cassandra**: query-first wide-column workflow with consistency settings, CQL builder, structure view, shell, and denormalized schema map.
   These differences are reflected both in the renderer folder structure and in the Rust engine adapters/ports.

7. **Rust core layering**
   The backend follows a **vertical-slice + clean architecture** style. Each feature under `src-tauri/src/features/<slice>` is split into domain/application/ports/infrastructure/commands where needed. The command layer is thin and acts as the Tauri boundary; application/domain code holds use-case logic; infrastructure contains adapters such as local storage, keychain access, and DB integrations.

8. **Engine ports and adapters**
   The core uses shared port traits in `src-tauri/src/shared` to keep engine-specific implementations isolated. There are separate port families for **SQL**, **key-value**, **document/Mongo**, **DynamoDB document**, and **wide-column/Cassandra** models. Concrete driver integrations live in `src-tauri/src/engines`, including `rusqlite`, `sqlx`, `redis`, `aws-sdk-dynamodb`, `mongodb`, `scylla`, plus SSH tunneling support in `ssh.rs`.

9. **Connection and secret management**
   Connection setup is its own subsystem with a clear privacy boundary. The renderer has a connection modal and connection state, but secrets are handled by the Rust side and stored in the **OS keychain**. The app also supports SSH tunneling, TLS, and engine-specific connection options; this is why the connection feature is separated from browsing/query features.

10. **Cross-cutting utility features**
   Several features are shared across engines or screens:
   - **Preferences/Settings**: theme, font, density, and behavior toggles persisted locally and reflected through CSS variables.
   - **Saved queries**: global or workspace-scoped query storage.
   - **Schema maps and exports**: visual diagrams plus PNG/SVG/CSV/JSON/SQL export paths.
   - **Generate / Import / Export / Mutate**: data generation, schema/data transfer, and write operations with confirmations.
   These are separate slices because they operate across multiple data models rather than belonging to one engine.

11. **Terminal and shells**
   The docked terminal panel is a shared runtime surface, but it is engine-aware: SQL engines use psql/mysql/sqlite-style shells, Redis uses redis-cli, MongoDB uses mongosh, Cassandra uses cqlsh, and DynamoDB uses PartiQL. This terminal subsystem is distinct from the structured browse/editor flows and acts as a lower-level escape hatch.

12. **Testing, fixtures, and delivery**
   The repository includes a Docker-backed `test-fixtures/` environment for seeded databases across supported engines, plus Rust integration tests and frontend type/lint checks. Packaging is handled through Tauri release builds and platform-specific installers, with GitHub Actions workflows for CI, Pages, and releases. The docs folder contains feature-spec documents that map closely to the implemented slices and are useful for understanding intended boundaries.

Main entry points: [`src-tauri/src/main.rs`](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/main.rs) (Tauri main), [`src/features/workspaces/components/WorkspaceShell.tsx`](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/workspaces/components/WorkspaceShell.tsx) (Workspace shell), [`src/shared/ui/Btn.tsx`](https://github.com/rezwanul-haque/bytetable/blob/main/src/shared/ui/Btn.tsx) (Shared UI), [`src-tauri/src/shared/mod.rs`](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/shared/mod.rs) (Shared ports)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_renderer["Renderer"]
  node_src_main(("App entry<br/>frontend entry<br/>[main.tsx]"))
  node_src_app["App shell<br/>frontend shell<br/>[App.tsx]"]
  node_ws_shell["Workspace shell<br/>workspace UI<br/>[WorkspaceShell.tsx]"]
  node_conn_ui["Connections<br/>connection UI"]
  node_sql_ui["SQL browse<br/>relational UI<br/>[DataGrid.tsx]"]
  node_redis_ui["Redis workspace<br/>kv UI<br/>[RedisWorkspace.tsx]"]
  node_dynamo_ui["Dynamo workspace<br/>dynamodb UI"]
  node_mongo_ui["Mongo workspace<br/>document UI<br/>[MongoWorkspace.tsx]"]
  node_cass_ui["Cassandra workspace<br/>wide-column UI"]
  node_term_ui["Terminal panel<br/>shell UI<br/>[TerminalPanel.tsx]"]
  node_prefs_ui["Settings<br/>preferences UI<br/>[SettingsModal.tsx]"]
  node_schema_ui["Schema maps<br/>diagram UI<br/>[SchemaMap.tsx]"]
  node_transfer_ui["Import/Export<br/>data transfer UI<br/>[ImportModal.tsx]"]
  node_gen_ui["Generate data<br/>data generation UI<br/>[GenerateModal.tsx]"]
  node_saved_ui["Saved queries<br/>query storage UI<br/>[api.ts]"]
  node_shared_ui["Shared UI<br/>ui kit<br/>[Btn.tsx]"]
end

subgraph group_core["Core"]
  node_tauri_main(("Tauri main<br/>backend entry<br/>[main.rs]"))
  node_core_conn["Conn feature<br/>backend slice<br/>[mod.rs]"]
  node_core_sql["Browse feature<br/>backend slice<br/>[mod.rs]"]
  node_core_kv["Keyvalue feature<br/>backend slice<br/>[mod.rs]"]
  node_core_dynamo["Dynamo feature<br/>backend slice<br/>[mod.rs]"]
  node_core_mongo["Mongo feature<br/>backend slice<br/>[mod.rs]"]
  node_core_cass["Cassandra feature<br/>backend slice<br/>[mod.rs]"]
  node_core_shared["Shared ports<br/>backend ports<br/>[mod.rs]"]
  node_core_engines["Engine adapters<br/>backend adapters<br/>[mod.rs]"]
  node_core_pref["Preferences<br/>backend slice<br/>[mod.rs]"]
  node_core_schema["Schema map<br/>backend slice<br/>[mod.rs]"]
  node_core_gen["Generate<br/>backend slice<br/>[mod.rs]"]
  node_core_export["Export<br/>backend slice<br/>[mod.rs]"]
  node_core_saved["Saved queries<br/>backend slice<br/>[mod.rs]"]
  node_core_structure["Structure<br/>backend slice<br/>[mod.rs]"]
  node_core_ssh(("SSH tunnel<br/>network adapter<br/>[ssh.rs]"))
end

subgraph group_delivery["Delivery"]
  node_fixtures[("Fixtures<br/>test data<br/>[README.md]")]
  node_docs["Docs"]
end

node_src_main -->|"boots"| node_src_app
node_src_app -->|"hosts"| node_ws_shell
node_src_app -->|"opens"| node_conn_ui
node_ws_shell -->|"switches"| node_sql_ui
node_ws_shell -->|"switches"| node_redis_ui
node_ws_shell -->|"switches"| node_dynamo_ui
node_ws_shell -->|"switches"| node_mongo_ui
node_ws_shell -->|"switches"| node_cass_ui
node_ws_shell -->|"docks"| node_term_ui
node_ws_shell -->|"configures"| node_prefs_ui
node_ws_shell -->|"renders"| node_schema_ui
node_ws_shell -->|"drives"| node_transfer_ui
node_ws_shell -->|"drives"| node_gen_ui
node_ws_shell -->|"uses"| node_saved_ui
node_sql_ui -->|"uses"| node_shared_ui
node_redis_ui -->|"uses"| node_shared_ui
node_dynamo_ui -->|"uses"| node_shared_ui
node_mongo_ui -->|"uses"| node_shared_ui
node_cass_ui -->|"uses"| node_shared_ui
node_conn_ui -->|"calls"| node_tauri_main
node_sql_ui -->|"calls"| node_tauri_main
node_redis_ui -->|"calls"| node_tauri_main
node_dynamo_ui -->|"calls"| node_tauri_main
node_mongo_ui -->|"calls"| node_tauri_main
node_cass_ui -->|"calls"| node_tauri_main
node_term_ui -->|"calls"| node_tauri_main
node_prefs_ui -->|"calls"| node_tauri_main
node_schema_ui -->|"calls"| node_tauri_main
node_transfer_ui -->|"calls"| node_tauri_main
node_gen_ui -->|"calls"| node_tauri_main
node_saved_ui -->|"calls"| node_tauri_main
node_tauri_main -->|"routes"| node_core_conn
node_tauri_main -->|"routes"| node_core_sql
node_tauri_main -->|"routes"| node_core_kv
node_tauri_main -->|"routes"| node_core_dynamo
node_tauri_main -->|"routes"| node_core_mongo
node_tauri_main -->|"routes"| node_core_cass
node_tauri_main -->|"routes"| node_core_pref
node_tauri_main -->|"routes"| node_core_schema
node_tauri_main -->|"routes"| node_core_gen
node_tauri_main -->|"routes"| node_core_export
node_tauri_main -->|"routes"| node_core_saved
node_tauri_main -->|"routes"| node_core_structure
node_core_conn -->|"uses"| node_core_shared
node_core_sql -->|"uses"| node_core_shared
node_core_kv -->|"uses"| node_core_shared
node_core_dynamo -->|"uses"| node_core_shared
node_core_mongo -->|"uses"| node_core_shared

click node_src_main "https://github.com/rezwanul-haque/bytetable/blob/main/src/main.tsx"
click node_src_app "https://github.com/rezwanul-haque/bytetable/blob/main/src/App.tsx"
click node_ws_shell "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/workspaces/components/WorkspaceShell.tsx"
click node_conn_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/connections/components/NewConnectionModal.tsx"
click node_sql_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/browse/components/DataGrid.tsx"
click node_redis_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/redis_browse/components/RedisWorkspace.tsx"
click node_dynamo_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/dynamo_browse/components/DynamoWorkspace.tsx"
click node_mongo_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/mongo_browse/components/MongoWorkspace.tsx"
click node_cass_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/cassandra_browse/components/CassandraWorkspace.tsx"
click node_term_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/console/TerminalPanel.tsx"
click node_prefs_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/settings/components/SettingsModal.tsx"
click node_schema_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/schema_map/components/SchemaMap.tsx"
click node_transfer_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/import/components/ImportModal.tsx"
click node_gen_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/generate/components/GenerateModal.tsx"
click node_saved_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/features/saved_queries/api.ts"
click node_shared_ui "https://github.com/rezwanul-haque/bytetable/blob/main/src/shared/ui/Btn.tsx"
click node_tauri_main "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/main.rs"
click node_core_conn "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/connections/mod.rs"
click node_core_sql "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/browse/mod.rs"
click node_core_kv "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/keyvalue/mod.rs"
click node_core_dynamo "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/dynamo/mod.rs"
click node_core_mongo "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/mongo/mod.rs"
click node_core_cass "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/cassandra/mod.rs"
click node_core_shared "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/shared/mod.rs"
click node_core_engines "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/engines/mod.rs"
click node_core_pref "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/preferences/mod.rs"
click node_core_schema "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/schema_map/mod.rs"
click node_core_gen "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/generate/mod.rs"
click node_core_export "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/export/mod.rs"
click node_core_saved "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/saved_queries/mod.rs"
click node_core_structure "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/structure/mod.rs"
click node_core_ssh "https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/engines/ssh.rs"
click node_fixtures "https://github.com/rezwanul-haque/bytetable/blob/main/test-fixtures/README.md"
click node_docs "https://github.com/rezwanul-haque/bytetable/blob/main/docs/M1-workspace-rail-connect-screen.md"

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_src_main,node_src_app,node_ws_shell,node_conn_ui,node_sql_ui,node_redis_ui,node_dynamo_ui,node_mongo_ui,node_cass_ui,node_term_ui,node_prefs_ui,node_schema_ui,node_transfer_ui,node_gen_ui,node_saved_ui,node_shared_ui toneBlue
class node_tauri_main,node_core_conn,node_core_sql,node_core_kv,node_core_dynamo,node_core_mongo,node_core_cass,node_core_shared,node_core_engines,node_core_pref,node_core_schema,node_core_gen,node_core_export,node_core_saved,node_core_structure,node_core_ssh toneAmber
class node_fixtures,node_docs toneMint
```

## Components

### Renderer

React + TypeScript UI in the webview

- [App entry](https://github.com/rezwanul-haque/bytetable/blob/main/src/main.tsx): frontend entry · Bootstraps the renderer app · `src/main.tsx`
- [App shell](https://github.com/rezwanul-haque/bytetable/blob/main/src/App.tsx): frontend shell · Top-level app composition and routing · `src/App.tsx`
- [Workspace shell](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/workspaces/components/WorkspaceShell.tsx): workspace UI · Multi-workspace layout with rail, sidebar, tabs, status, and command palette · `src/features/workspaces/components/WorkspaceShell.tsx`
- [Connections](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/connections/components/NewConnectionModal.tsx): connection UI · Connection modal and connection state boundary · `src/features/connections/components/NewConnectionModal.tsx`
- [SQL browse](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/browse/components/DataGrid.tsx): relational UI · Grid, editor, structure, filters, insights, and mutations for SQL engines · `src/features/browse/components/DataGrid.tsx`
- [Redis workspace](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/redis_browse/components/RedisWorkspace.tsx): kv UI · Keyspace browser with type-aware editing and dashboard · `src/features/redis_browse/components/RedisWorkspace.tsx`
- [Dynamo workspace](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/dynamo_browse/components/DynamoWorkspace.tsx): dynamodb UI · Table-centric scan/query, item editing, and schema map · `src/features/dynamo_browse/components/DynamoWorkspace.tsx`
- [Mongo workspace](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/mongo_browse/components/MongoWorkspace.tsx): document UI · Collection browsing, aggregation, document editing, shell, and explain views · `src/features/mongo_browse/components/MongoWorkspace.tsx`
- [Cassandra workspace](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/cassandra_browse/components/CassandraWorkspace.tsx): wide-column UI · Query-first CQL workflow with structure and schema map · `src/features/cassandra_browse/components/CassandraWorkspace.tsx`
- [Terminal panel](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/console/TerminalPanel.tsx): shell UI · Engine-aware interactive shell surface · `src/features/console/TerminalPanel.tsx`
- [Settings](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/settings/components/SettingsModal.tsx): preferences UI · Theme, font, density, and behavior preferences · `src/features/settings/components/SettingsModal.tsx`
- [Schema maps](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/schema_map/components/SchemaMap.tsx): diagram UI · Cross-engine schema visualization and export rendering · `src/features/schema_map/components/SchemaMap.tsx`
- [Import/Export](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/import/components/ImportModal.tsx): data transfer UI · Import, export, schema creation, and bulk transfer flows · `src/features/import/components/ImportModal.tsx`
- [Generate data](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/generate/components/GenerateModal.tsx): data generation UI · Synthetic data generation workflow · `src/features/generate/components/GenerateModal.tsx`
- [Saved queries](https://github.com/rezwanul-haque/bytetable/blob/main/src/features/saved_queries/api.ts): query storage UI · Stored query state shared across workspaces · `src/features/saved_queries/api.ts`
- [Shared UI](https://github.com/rezwanul-haque/bytetable/blob/main/src/shared/ui/Btn.tsx): ui kit · Cross-cutting components, styles, types, and API helpers · `src/shared/ui/Btn.tsx`

### Core

Rust Tauri backend, commands, ports, and engine adapters

- [Tauri main](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/main.rs): backend entry · Rust application entry and Tauri setup · `src-tauri/src/main.rs`
- [Conn feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/connections/mod.rs): backend slice · Connection setup, secret handling, and persistence · `src-tauri/src/features/connections/mod.rs`
- [Browse feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/browse/mod.rs): backend slice · Shared relational browse and query use cases · `src-tauri/src/features/browse/mod.rs`
- [Keyvalue feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/keyvalue/mod.rs): backend slice · Redis-style keyspace operations · `src-tauri/src/features/keyvalue/mod.rs`
- [Dynamo feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/dynamo/mod.rs): backend slice · DynamoDB document workflows and item operations · `src-tauri/src/features/dynamo/mod.rs`
- [Mongo feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/mongo/mod.rs): backend slice · MongoDB document and pipeline workflows · `src-tauri/src/features/mongo/mod.rs`
- [Cassandra feature](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/cassandra/mod.rs): backend slice · CQL and wide-column workflows · `src-tauri/src/features/cassandra/mod.rs`
- [Shared ports](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/shared/mod.rs): backend ports · Engine-agnostic shared models and port traits · `src-tauri/src/shared/mod.rs`
- [Engine adapters](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/engines/mod.rs): backend adapters · Concrete SQL, Redis, Mongo, DynamoDB, Cassandra, and SSH integrations · `src-tauri/src/engines/mod.rs`
- [Preferences](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/preferences/mod.rs): backend slice · Persisted settings and local app behavior · `src-tauri/src/features/preferences/mod.rs`
- [Schema map](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/schema_map/mod.rs): backend slice · Schema mapping and diagram generation logic · `src-tauri/src/features/schema_map/mod.rs`
- [Generate](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/generate/mod.rs): backend slice · Synthetic data planning and generation · `src-tauri/src/features/generate/mod.rs`
- [Export](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/export/mod.rs): backend slice · Schema and data export workflows · `src-tauri/src/features/export/mod.rs`
- [Saved queries](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/saved_queries/mod.rs): backend slice · Query storage and retrieval · `src-tauri/src/features/saved_queries/mod.rs`
- [Structure](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/features/structure/mod.rs): backend slice · Introspection and structure operations · `src-tauri/src/features/structure/mod.rs`
- [SSH tunnel](https://github.com/rezwanul-haque/bytetable/blob/main/src-tauri/src/engines/ssh.rs): network adapter · Secure tunneling support for remote connections · `src-tauri/src/engines/ssh.rs`

### Delivery

Docs, fixtures, CI, and packaging

- [Fixtures](https://github.com/rezwanul-haque/bytetable/blob/main/test-fixtures/README.md): test data · Seeded databases and Docker-backed test environments · `test-fixtures/README.md`
- [Docs](https://github.com/rezwanul-haque/bytetable/blob/main/docs/M1-workspace-rail-connect-screen.md): spec docs · Feature specifications and implementation notes · `docs/M1-workspace-rail-connect-screen.md`

## Connections

- App entry → App shell: boots · Renderer entry mounts the app shell
- App shell → Workspace shell: hosts · Main app composition centers on the workspace shell
- App shell → Connections: opens · Connect flow is reachable from the app shell
- Workspace shell → SQL browse: switches · Workspace tabs route into relational browsing
- Workspace shell → Redis workspace: switches · Workspace tabs route into Redis browsing
- Workspace shell → Dynamo workspace: switches · Workspace tabs route into DynamoDB browsing
- Workspace shell → Mongo workspace: switches · Workspace tabs route into MongoDB browsing
- Workspace shell → Cassandra workspace: switches · Workspace tabs route into Cassandra browsing
- Workspace shell → Terminal panel: docks · Workspace shell embeds the terminal panel
- Workspace shell → Settings: configures · Workspace state exposes preferences and behavior settings
- Workspace shell → Schema maps: renders · Workspace features can open schema maps
- Workspace shell → Import/Export: drives · Workspace actions trigger import/export flows
- Workspace shell → Generate data: drives · Workspace actions trigger data generation flows
- Workspace shell → Saved queries: uses · Workspace state can persist and recall queries
- SQL browse → Shared UI: uses · SQL UI relies on shared primitives and helpers
- Redis workspace → Shared UI: uses · Redis UI relies on shared primitives and helpers
- Dynamo workspace → Shared UI: uses · Dynamo UI relies on shared primitives and helpers
- Mongo workspace → Shared UI: uses · Mongo UI relies on shared primitives and helpers
- Cassandra workspace → Shared UI: uses · Cassandra UI relies on shared primitives and helpers
- Connections → Tauri main: calls · Renderer invokes Rust commands for connection setup
- SQL browse → Tauri main: calls · Relational browse flows cross the Tauri command boundary
- Redis workspace → Tauri main: calls · Redis browse flows cross the Tauri command boundary
- Dynamo workspace → Tauri main: calls · Dynamo browse flows cross the Tauri command boundary
- Mongo workspace → Tauri main: calls · Mongo browse flows cross the Tauri command boundary
- Cassandra workspace → Tauri main: calls · Cassandra browse flows cross the Tauri command boundary
- Terminal panel → Tauri main: calls · Terminal sessions delegate execution to Rust backends
- Settings → Tauri main: calls · Preferences are persisted and applied through backend commands
- Schema maps → Tauri main: calls · Schema map generation and export are backed by Rust commands
- Import/Export → Tauri main: calls · Import/export and schema changes are executed in Rust
- Generate data → Tauri main: calls · Data generation is executed in the backend
- Saved queries → Tauri main: calls · Saved query storage is handled by backend commands
- Tauri main → Conn feature: routes · Tauri entry exposes the connection feature boundary
- Tauri main → Browse feature: routes · Tauri entry exposes the relational browse feature
- Tauri main → Keyvalue feature: routes · Tauri entry exposes the key-value feature
- Tauri main → Dynamo feature: routes · Tauri entry exposes the DynamoDB feature
- Tauri main → Mongo feature: routes · Tauri entry exposes the MongoDB feature
- Tauri main → Cassandra feature: routes · Tauri entry exposes the Cassandra feature
- Tauri main → Preferences: routes · Tauri entry exposes preferences commands
- Tauri main → Schema map: routes · Tauri entry exposes schema map commands
- Tauri main → Generate: routes · Tauri entry exposes data generation commands
- Tauri main → Export: routes · Tauri entry exposes export commands
- Tauri main → Saved queries: routes · Tauri entry exposes saved query commands
- Tauri main → Structure: routes · Tauri entry exposes structure/introspection commands
- Conn feature → Shared ports: uses · Connection logic depends on shared ports and models
- Browse feature → Shared ports: uses · Relational logic depends on shared engine abstractions
- Keyvalue feature → Shared ports: uses · Key-value logic depends on shared engine abstractions
- Dynamo feature → Shared ports: uses · DynamoDB logic depends on shared engine abstractions
- Mongo feature → Shared ports: uses · MongoDB logic depends on shared engine abstractions
