# sangyu666/syycdesk architecture

> Architecture diagram of the GitHub repository sangyu666/syycdesk, 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/sangyu666/syycdesk
- Repository: https://github.com/sangyu666/syycdesk
- Video tour (about a minute): https://gitdiagram.com/sangyu666/syycdesk/video

## Overview

SyycDesk is a remote-desktop product: users connect to a peer, negotiate a session and transport, then exchange desktop video, input, and auxiliary operations such as file transfer. The tree shows Windows and Qt UI variants, a Go coordination/relay server, and native networking and media layers. The README is empty, and sampled source is partial, so the graph emphasizes supported entry points and subsystem capabilities while omitting uncertain internal wiring.

Main entry points: [`Server/cmd/api/main.go`](https://github.com/sangyu666/syycdesk/blob/main/Server/cmd/api/main.go) (API service), [`WIN32UI/src/core/connection_controller.cpp`](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/connection_controller.cpp) (Connection control), [`WIN32UI/src/sub_windows/remote_session_controller.cpp`](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/sub_windows/remote_session_controller.cpp) (Remote session), [`WIN32UI/src/app_window.cpp`](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/app_window.cpp) (Windows UI)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_clients["Desktop clients"]
  node_win_ui["Windows UI<br/>[app_window.cpp]"]
  node_qt_ui["Qt UI<br/>[main_window.cpp]"]
end

subgraph group_session["Session control"]
  node_connection["Connection control"]
  node_remote_session["Remote session"]
  node_native_bridge["Native bridge<br/>[native_bridge.cpp]"]
  node_file_transfer["File transfer"]
  node_server_client["Server client<br/>[server_client.cpp]"]
end

subgraph group_transport["Connectivity"]
  node_p2p_engine["Path negotiation<br/>[engine.cpp]"]
  node_native_provider["Native transport"]
  node_relay_transport["Relay transport"]
end

subgraph group_media["Desktop media"]
  node_video_pipeline["Video pipeline<br/>[video_pipeline.cpp]"]
  node_input_router["Input routing<br/>[input_router.cpp]"]
  node_capture["Windows capture<br/>[dxgi_capture.cpp]"]
  node_input_injector["Input injection"]
end

subgraph group_service["Coordination service"]
  node_api["API service<br/>[main.go]"]
  node_auth["Authentication<br/>[auth.go]"]
  node_signaling["Signaling hub<br/>[hub.go]"]
  node_sessions["Session service<br/>[service.go]"]
  node_presence["Device presence<br/>[registry.go]"]
  node_relay["Relay service<br/>[runtime.go]"]
  node_console["Operations console<br/>[handler.go]"]
end

node_user(("Remote user"))

node_user -->|"uses"| node_win_ui
node_user -->|"uses"| node_qt_ui
node_win_ui -->|"starts sessions"| node_connection
node_connection -->|"controls native"| node_native_bridge
node_connection -->|"updates state"| node_remote_session
node_remote_session -->|"submits input"| node_input_router
node_remote_session -->|"requests transfers"| node_file_transfer
node_qt_ui -->|"uses"| node_server_client
node_server_client -->|"contacts service"| node_api
node_api -->|"authenticates"| node_auth
node_api -->|"manages sessions"| node_sessions
node_api -->|"tracks devices"| node_presence
node_api -->|"dispatches signaling"| node_signaling
node_signaling -->|"coordinates relay"| node_relay
node_native_bridge -->|"drives paths"| node_p2p_engine
node_p2p_engine -->|"selects path"| node_native_provider
node_native_provider -.->|"uses relay path"| node_relay_transport
node_video_pipeline -->|"captures frames"| node_capture
node_input_router -->|"delivers input"| node_input_injector
node_user -->|"monitors service"| node_console

click node_win_ui "https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/app_window.cpp"
click node_qt_ui "https://github.com/sangyu666/syycdesk/blob/main/ui_skeleton/src/ui/main/main_window.cpp"
click node_connection "https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/connection_controller.cpp"
click node_remote_session "https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/sub_windows/remote_session_controller.cpp"
click node_native_bridge "https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/native_bridge.cpp"
click node_file_transfer "https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/file_transfer_controller.cpp"
click node_server_client "https://github.com/sangyu666/syycdesk/blob/main/ui_skeleton/src/ui/native/server_client.cpp"
click node_api "https://github.com/sangyu666/syycdesk/blob/main/Server/cmd/api/main.go"
click node_auth "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/auth/auth.go"
click node_signaling "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/signaling/hub.go"
click node_sessions "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/session/service.go"
click node_presence "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/presence/registry.go"
click node_relay "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/relay/runtime.go"
click node_p2p_engine "https://github.com/sangyu666/syycdesk/blob/main/p2p_native/src/engine.cpp"
click node_native_provider "https://github.com/sangyu666/syycdesk/blob/main/p2p_native/providers/native/src/native_provider.cpp"
click node_relay_transport "https://github.com/sangyu666/syycdesk/blob/main/p2p_native/providers/native/src/relay_transport.cpp"
click node_video_pipeline "https://github.com/sangyu666/syycdesk/blob/main/core_native/src/media/video_pipeline.cpp"
click node_input_router "https://github.com/sangyu666/syycdesk/blob/main/core_native/src/input/input_router.cpp"
click node_capture "https://github.com/sangyu666/syycdesk/blob/main/platform/windows/capture/dxgi_capture.cpp"
click node_input_injector "https://github.com/sangyu666/syycdesk/blob/main/platform/windows/input/windows_input_injector.cpp"
click node_console "https://github.com/sangyu666/syycdesk/blob/main/Server/internal/console/handler.go"

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_win_ui,node_qt_ui,node_user toneBlue
class node_connection,node_remote_session,node_native_bridge,node_file_transfer,node_server_client toneAmber
class node_p2p_engine,node_native_provider,node_relay_transport toneMint
class node_video_pipeline,node_input_router,node_capture,node_input_injector toneRose
class node_api,node_auth,node_signaling,node_sessions,node_presence,node_relay,node_console toneIndigo
```

## Components

### Desktop clients

- [Windows UI](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/app_window.cpp): `WIN32UI/src/app_window.cpp`
- [Qt UI](https://github.com/sangyu666/syycdesk/blob/main/ui_skeleton/src/ui/main/main_window.cpp): `ui_skeleton/src/ui/main/main_window.cpp`

### Session control

- [Connection control](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/connection_controller.cpp): `WIN32UI/src/core/connection_controller.cpp`
- [Remote session](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/sub_windows/remote_session_controller.cpp): `WIN32UI/src/sub_windows/remote_session_controller.cpp`
- [Native bridge](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/native_bridge.cpp): `WIN32UI/src/core/native_bridge.cpp`
- [File transfer](https://github.com/sangyu666/syycdesk/blob/main/WIN32UI/src/core/file_transfer_controller.cpp): `WIN32UI/src/core/file_transfer_controller.cpp`
- [Server client](https://github.com/sangyu666/syycdesk/blob/main/ui_skeleton/src/ui/native/server_client.cpp): `ui_skeleton/src/ui/native/server_client.cpp`

### Connectivity

- [Path negotiation](https://github.com/sangyu666/syycdesk/blob/main/p2p_native/src/engine.cpp): `p2p_native/src/engine.cpp`
- [Native transport](https://github.com/sangyu666/syycdesk/blob/main/p2p_native/providers/native/src/native_provider.cpp): `p2p_native/providers/native/src/native_provider.cpp`
- [Relay transport](https://github.com/sangyu666/syycdesk/blob/main/p2p_native/providers/native/src/relay_transport.cpp): `p2p_native/providers/native/src/relay_transport.cpp`

### Desktop media

- [Video pipeline](https://github.com/sangyu666/syycdesk/blob/main/core_native/src/media/video_pipeline.cpp): `core_native/src/media/video_pipeline.cpp`
- [Input routing](https://github.com/sangyu666/syycdesk/blob/main/core_native/src/input/input_router.cpp): `core_native/src/input/input_router.cpp`
- [Windows capture](https://github.com/sangyu666/syycdesk/blob/main/platform/windows/capture/dxgi_capture.cpp): `platform/windows/capture/dxgi_capture.cpp`
- [Input injection](https://github.com/sangyu666/syycdesk/blob/main/platform/windows/input/windows_input_injector.cpp): `platform/windows/input/windows_input_injector.cpp`

### Coordination service

- [API service](https://github.com/sangyu666/syycdesk/blob/main/Server/cmd/api/main.go): `Server/cmd/api/main.go`
- [Authentication](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/auth/auth.go): `Server/internal/auth/auth.go`
- [Signaling hub](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/signaling/hub.go): `Server/internal/signaling/hub.go`
- [Session service](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/session/service.go): `Server/internal/session/service.go`
- [Device presence](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/presence/registry.go): `Server/internal/presence/registry.go`
- [Relay service](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/relay/runtime.go): `Server/internal/relay/runtime.go`
- [Operations console](https://github.com/sangyu666/syycdesk/blob/main/Server/internal/console/handler.go): `Server/internal/console/handler.go`

### Other components

- **Remote user**

## Connections

- Remote user → Windows UI: uses
- Remote user → Qt UI: uses
- Windows UI → Connection control: starts sessions
- Connection control → Native bridge: controls native
- Connection control → Remote session: updates state
- Remote session → Input routing: submits input
- Remote session → File transfer: requests transfers
- Qt UI → Server client: uses
- Server client → API service: contacts service
- API service → Authentication: authenticates
- API service → Session service: manages sessions
- API service → Device presence: tracks devices
- API service → Signaling hub: dispatches signaling
- Signaling hub → Relay service: coordinates relay
- Native bridge → Path negotiation: drives paths
- Path negotiation → Native transport: selects path
- Native transport → Relay transport: uses relay path
- Video pipeline → Windows capture: captures frames
- Input routing → Input injection: delivers input
- Remote user → Operations console: monitors service
