# edmarcrescencio/chuweydevpanel architecture

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

- Interactive diagram: https://gitdiagram.com/edmarcrescencio/chuweydevpanel
- Repository: https://github.com/edmarcrescencio/chuweydevpanel

## Overview

ChuweyDevPanel is an Electron desktop panel (also runnable in a browser) for administering remote SSH servers. The user workflow is to register a host, connect to it, then operate an interactive terminal or run commands for dashboard checks and Docker management; server and snippet data are also managed in the UI and can be backed up through Telegram. The graph separates the desktop shell, frontend features, backend SSH/API runtime, and backup integration. Several backend routes and UI wiring are documented but not fully sampled, so uncertain internal links are omitted.

Main entry points: [`public/js/app.js`](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/app.js) (App router), [`server.js`](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js) (Express API), [`public/js/store.js`](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/store.js) (Local store), [`main.js`](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/main.js) (Electron shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_desktop["Desktop shell"]
  node_electron["Electron shell<br/>[main.js]"]
  node_bridge["IPC bridge<br/>[preload.js]"]
end

subgraph group_frontend["Panel frontend"]
  node_router["App router<br/>[app.js]"]
  node_ui["UI utilities<br/>[ui.js]"]
  node_store[("Local store<br/>[store.js]")]
  node_servers["Server manager<br/>[servers.js]"]
  node_dashboard["Server dashboard<br/>[dashboard.js]"]
  node_snippets["Snippet runner<br/>[snippets.js]"]
  node_docker["Docker manager<br/>[docker.js]"]
  node_settings["Settings<br/>[settings.js]"]
end

subgraph group_remote["SSH runtime"]
  node_backend["Express API<br/>[server.js]"]
  node_sessions["SSH sessions<br/>[server.js]"]
  node_terminal["WebSocket terminal<br/>[server.js]"]
end

subgraph group_backup["Backup integration"]
  node_backup_ui["Backup controls<br/>[backup.js]"]
end

node_user(("User"))
node_ssh_host{{"Remote SSH host"}}
node_telegram{{"Telegram API"}}

node_user -->|"launches"| node_electron
node_electron -->|"starts server"| node_backend
node_electron -->|"loads panel"| node_router
node_router -->|"initializes"| node_store
node_router -->|"initializes"| node_ui
node_router -->|"routes to"| node_servers
node_router -->|"routes to"| node_dashboard
node_router -->|"routes to"| node_snippets
node_router -->|"routes to"| node_docker
node_router -->|"routes to"| node_settings
node_router -->|"routes to"| node_backup_ui
node_servers -->|"reads/writes"| node_store
node_snippets -->|"reads/writes"| node_store
node_dashboard -->|"reads/writes"| node_store
node_settings -->|"reads/writes"| node_store
node_backup_ui -->|"reads"| node_store
node_servers -->|"SSH requests"| node_backend
node_servers -->|"opens terminal"| node_terminal
node_dashboard -->|"runs checks"| node_backend
node_snippets -->|"executes commands"| node_backend
node_docker -->|"runs Docker commands"| node_backend
node_backend -->|"dispatches SSH"| node_sessions
node_sessions -->|"connects"| node_ssh_host
node_terminal -->|"uses session"| node_sessions
node_terminal -->|"streams PTY"| node_ssh_host
node_backup_ui -->|"backup requests"| node_backend
node_backend -->|"sends backup"| node_telegram
node_electron -->|"handles IPC"| node_bridge
node_bridge -->|"exposes API"| node_router

click node_electron "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/main.js"
click node_bridge "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/preload.js"
click node_router "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/app.js"
click node_ui "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/ui.js"
click node_store "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/store.js"
click node_servers "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/servers.js"
click node_dashboard "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/dashboard.js"
click node_snippets "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/snippets.js"
click node_docker "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/docker.js"
click node_settings "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/settings.js"
click node_backup_ui "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/backup.js"
click node_backend "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js"
click node_sessions "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js"
click node_terminal "https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js"

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_electron,node_bridge,node_user toneBlue
class node_router,node_ui,node_store,node_servers,node_dashboard,node_snippets,node_docker,node_settings toneAmber
class node_backend,node_sessions,node_terminal,node_telegram toneMint
class node_backup_ui toneRose
class node_ssh_host toneIndigo
```

## Components

### Desktop shell

- [Electron shell](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/main.js): `main.js`
- [IPC bridge](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/preload.js): `preload.js`

### Panel frontend

- [App router](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/app.js): `public/js/app.js`
- [UI utilities](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/ui.js): `public/js/ui.js`
- [Local store](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/store.js): `public/js/store.js`
- [Server manager](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/servers.js): `public/js/servers.js`
- [Server dashboard](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/dashboard.js): `public/js/dashboard.js`
- [Snippet runner](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/snippets.js): `public/js/snippets.js`
- [Docker manager](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/docker.js): `public/js/docker.js`
- [Settings](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/settings.js): `public/js/settings.js`

### SSH runtime

- [Express API](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js): `server.js`
- [SSH sessions](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js): `server.js`
- [WebSocket terminal](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/server.js): `server.js`

### Backup integration

- [Backup controls](https://github.com/edmarcrescencio/chuweydevpanel/blob/main/public/js/backup.js): `public/js/backup.js`

### Other components

- **User**
- **Remote SSH host**
- **Telegram API**

## Connections

- User → Electron shell: launches
- Electron shell → Express API: starts server
- Electron shell → App router: loads panel
- App router → Local store: initializes
- App router → UI utilities: initializes
- App router → Server manager: routes to
- App router → Server dashboard: routes to
- App router → Snippet runner: routes to
- App router → Docker manager: routes to
- App router → Settings: routes to
- App router → Backup controls: routes to
- Server manager → Local store: reads/writes
- Snippet runner → Local store: reads/writes
- Server dashboard → Local store: reads/writes
- Settings → Local store: reads/writes
- Backup controls → Local store: reads
- Server manager → Express API: SSH requests
- Server manager → WebSocket terminal: opens terminal
- Server dashboard → Express API: runs checks
- Snippet runner → Express API: executes commands
- Docker manager → Express API: runs Docker commands
- Express API → SSH sessions: dispatches SSH
- SSH sessions → Remote SSH host: connects
- WebSocket terminal → SSH sessions: uses session
- WebSocket terminal → Remote SSH host: streams PTY
- Backup controls → Express API: backup requests
- Express API → Telegram API: sends backup
- Electron shell → IPC bridge: handles IPC
- IPC bridge → App router: exposes API
