mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-04 16:46:08 +02:00
142 lines
9.7 KiB
Markdown
142 lines
9.7 KiB
Markdown
# Architecture — HueByte/EchoHub
|
|
|
|
> *Auto-synthesized from 617 documented symbols across 128 files on `master`.*
|
|
|
|
## Topic Guides
|
|
|
|
Deep-dives into cross-cutting concerns synthesized from the per-symbol corpus.
|
|
|
|
- [API client authentication](api-client-authentication.md) — How the client authenticates with the server, including login, token refresh, and token usage across API calls.
|
|
- [Real-time connection and messaging](real-time-connection.md) — How the client establishes and maintains a real-time connection to the server and handles channel messaging.
|
|
- [UI theming and theme management](ui-theming.md) — Theme data models and the system that loads, stores, and applies themes to the UI.
|
|
- [Slash command handling](command-handling.md) — Parsing and executing user commands entered as slash commands in chat.
|
|
- [Attachments transfer](attachments-transfer.md) — Attachment handling for staged files and outgoing attachments in chat messages.
|
|
- [Clipboard utilities](clipboard-tools.md) — Clipboard helpers for files and images used in the UI.
|
|
- [Update management](update-management.md) — Checking for updates and backing up state related to updates.
|
|
- [Encryption and room keys](encryption-roomkeys.md) — Client-side encryption and per-room key protection for secure messaging.
|
|
|
|
## Architecture Diagram
|
|
|
|
```mermaid
|
|
%%{init: {'theme':'base','themeVariables':{'background':'#faf7ef','primaryColor':'#f0e2c2','primaryTextColor':'#1f2840','primaryBorderColor':'#8a7548','secondaryColor':'#d9efec','secondaryBorderColor':'#1d8a80','secondaryTextColor':'#1f2840','tertiaryColor':'#f2ebd8','tertiaryBorderColor':'#8a7548','tertiaryTextColor':'#1f2840','lineColor':'#1d8a80','titleColor':'#1f2840','fontSize':'14px','edgeLabelBackground':'#faf7ef','clusterBkg':'#f2ebd8','clusterBorder':'#8a7548','actorBkg':'#f0e2c2','actorBorder':'#8a7548','actorTextColor':'#1f2840','actorLineColor':'#8a7548','signalColor':'#1d8a80','signalTextColor':'#1f2840','activationBkgColor':'#d9efec','activationBorderColor':'#1d8a80','noteBkgColor':'#f2ebd8','noteBorderColor':'#8a7548','noteTextColor':'#1f2840','labelBoxBkgColor':'#f0e2c2','labelBoxBorderColor':'#8a7548','labelTextColor':'#1f2840','transitionColor':'#1d8a80','transitionLabelColor':'#1f2840','stateLabelColor':'#1f2840','altBackground':'#f2ebd8'}}}%%
|
|
flowchart TB
|
|
n0["src/EchoHub.Client/Services · AppOrchestrator (22 files)"]
|
|
n1["src/EchoHub.Client/UI · MainWindow (18 files)"]
|
|
n2["src/EchoHub.Core/DTOs · ApiClient (10 files)"]
|
|
n3["src/EchoHub.Server · User (13 files)"]
|
|
n4["src/EchoHub.Core/DTOs · ChannelService (7 files)"]
|
|
n5["src/EchoHub.Server · Program (12 files)"]
|
|
n6["src/EchoHub.Core/Contracts · ChannelDto (6 files)"]
|
|
n7["src/EchoHub.Client/UI · Channel (4 files)"]
|
|
n8["src/EchoHub.Client/UI · UserStatus (3 files)"]
|
|
n9["src/EchoHub.Core/DTOs · ChannelsController (2 files)"]
|
|
n10["src/EchoHub.Core/Models (5 files)"]
|
|
n0 -->|8| n1
|
|
n0 -->|4| n10
|
|
n0 -->|5| n2
|
|
n0 -->|9| n3
|
|
n0 -->|4| n5
|
|
n0 -->|7| n6
|
|
n0 -->|7| n7
|
|
n0 -->|6| n8
|
|
n1 -->|4| n0
|
|
n1 -->|4| n3
|
|
n2 -->|5| n0
|
|
n2 -->|9| n3
|
|
n2 -->|4| n9
|
|
n3 -->|9| n2
|
|
n4 -->|4| n3
|
|
n4 -->|5| n6
|
|
n4 -->|5| n7
|
|
n5 -->|7| n3
|
|
n5 -->|4| n6
|
|
n6 -->|9| n0
|
|
n6 -->|4| n7
|
|
n6 -->|4| n8
|
|
n9 -->|4| n3
|
|
n9 -->|4| n4
|
|
```
|
|
|
|
## System Overview
|
|
This repository implements a chat and file-sharing server with a desktop client: server-side controllers expose an HTTP API (e.g. `AuthController`, `UsersController`, `FilesController`) while a real-time hub (`ChatHub`) handles live messaging and presence. Background workers and maintenance tasks run as hosted services (for example `FileCleanupService` and `DataMigrationService`), and persistent state is stored in the Entity Framework DbContext (`EchoHubDbContext`). The desktop client communicates with the server via an API client (`ApiClient`) and includes local services like audio playback and message encryption.
|
|
|
|
## Key Components
|
|
**Controllers** — HTTP API surface for authentication, user and channel management, file operations and moderation. Implemented by [`AuthController`](../Code/src/EchoHub.Server/Controllers/AuthController.cs.md), [`ChannelsController`](../Code/src/EchoHub.Server/Controllers/ChannelsController.cs.md), [`FilesController`](../Code/src/EchoHub.Server/Controllers/FilesController.cs.md), [`InvitesController`](../Code/src/EchoHub.Server/Controllers/InvitesController.cs.md), [`ModerationController`](../Code/src/EchoHub.Server/Controllers/ModerationController.cs.md), [`ServerController`](../Code/src/EchoHub.Server/Controllers/ServerController.cs.md), [`UsersController`](../Code/src/EchoHub.Server/Controllers/UsersController.cs.md).
|
|
|
|
**Services** — Core application logic and long-running background tasks, including channel/chat handling, file storage/cleanup, migrations, and utility services used by client and server. Implemented by [`ChannelService`](../Code/src/EchoHub.Server/Services/ChannelService.cs.md), [`ChatService`](../Code/src/EchoHub.Server/Services/ChatService.cs.md), [`FileCleanupService`](../Code/src/EchoHub.Server/Services/FileCleanupService.cs.md), [`FileStorageService`](../Code/src/EchoHub.Server/Services/FileStorageService.cs.md), [`DataMigrationService`](../Code/src/EchoHub.Server/Setup/DataMigrationService.cs.md), [`AsciiBannerService`](../Code/src/EchoHub.Core/Services/AsciiBannerService.cs.md), [`AudioPlaybackService`](../Code/src/EchoHub.Client/Services/AudioPlaybackService.cs.md), [`ClientEncryptionService`](../Code/src/EchoHub.Client/Services/ClientEncryptionService.cs.md).
|
|
|
|
**Workers/Hubs** — Real-time messaging and presence channel for live client-server communication. Implemented by [`ChatHub`](../Code/src/EchoHub.Server/Hubs/ChatHub.cs.md).
|
|
|
|
**Repositories / Data Access** — Persistence layer backed by Entity Framework Core; where application state is stored. Implemented by [`EchoHubDbContext`](../Code/src/EchoHub.Server/Data/EchoHubDbContext.cs.md).
|
|
|
|
**External integrations** — Client and protocol integrations used to communicate with the server or external systems (IRC). Implemented by [`ApiClient`](../Code/src/EchoHub.Client/Services/ApiClient.cs.md), [`IrcServiceExtensions`](../Code/src/EchoHub.Server.Irc/IrcServiceExtensions.cs.md), [`IrcCommandHandler`](../Code/src/EchoHub.Server.Irc/IrcCommandHandler.cs.md), [`IrcOptions`](../Code/src/EchoHub.Server.Irc/IrcOptions.cs.md).
|
|
|
|
## Component Map
|
|
|
|
*Subsystems below are structural clusters detected from the dependency graph — groups of symbols more densely wired to each other than to the rest of the codebase.*
|
|
|
|
- **src/EchoHub.Client/Services · AppOrchestrator** — 22 documented files
|
|
- **src/EchoHub.Client/UI · MainWindow** — 18 documented files
|
|
- **src/EchoHub.Server · User** — 13 documented files
|
|
- **src/EchoHub.Server · Program** — 12 documented files
|
|
- **src/EchoHub.Core/DTOs · ApiClient** — 10 documented files
|
|
- **src/EchoHub.Core/DTOs · ChannelService** — 7 documented files
|
|
- **src/EchoHub.Core/Contracts · ChannelDto** — 6 documented files
|
|
- **src/EchoHub.Core/Models** — 5 documented files
|
|
- **src/EchoHub.Client/Themes** — 4 documented files
|
|
- **src/EchoHub.Client/UI · Channel** — 4 documented files
|
|
- **src/EchoHub.Server · ServerLogsStreamService** — 4 documented files
|
|
- **src/EchoHub.Client/Services · UpdateBackupService** — 3 documented files
|
|
- *…and 10 more subsystem folders*
|
|
|
|
### Components by Role
|
|
|
|
**Configuration**
|
|
- `IrcOptions` — `src/EchoHub.Server.Irc/IrcOptions.cs`
|
|
- `ServerLogsOptions` — `src/EchoHub.Server/Config/ServerLogsOptions.cs`
|
|
- `SpamOptions` — `src/EchoHub.Server/Config/SpamOptions.cs`
|
|
- `StatsOptions` — `src/EchoHub.Server/Config/StatsOptions.cs`
|
|
|
|
**Controllers**
|
|
- `AuthController` — `src/EchoHub.Server/Controllers/AuthController.cs`
|
|
- `ChannelsController` — `src/EchoHub.Server/Controllers/ChannelsController.cs`
|
|
- `FilesController` — `src/EchoHub.Server/Controllers/FilesController.cs`
|
|
- `InvitesController` — `src/EchoHub.Server/Controllers/InvitesController.cs`
|
|
- `ModerationController` — `src/EchoHub.Server/Controllers/ModerationController.cs`
|
|
- `ServerController` — `src/EchoHub.Server/Controllers/ServerController.cs`
|
|
- `UsersController` — `src/EchoHub.Server/Controllers/UsersController.cs`
|
|
|
|
**Data Access**
|
|
- `EchoHubDbContext` — `src/EchoHub.Server/Data/EchoHubDbContext.cs`
|
|
|
|
**Extensions**
|
|
- `IrcServiceExtensions` — `src/EchoHub.Server.Irc/IrcServiceExtensions.cs`
|
|
|
|
**External Clients**
|
|
- `ApiClient` — `src/EchoHub.Client/Services/ApiClient.cs`
|
|
- `IEchoHubClient` — `src/EchoHub.Core/Contracts/IEchoHubClient.cs`
|
|
|
|
**Handlers**
|
|
- `CommandHandler` — `src/EchoHub.Client/Commands/CommandHandler.cs`
|
|
- `IrcCommandHandler` — `src/EchoHub.Server.Irc/IrcCommandHandler.cs`
|
|
|
|
**Realtime Hubs**
|
|
- `ChatHub` — `src/EchoHub.Server/Hubs/ChatHub.cs`
|
|
|
|
**Services**
|
|
- `AsciiBannerService` — `src/EchoHub.Core/Services/AsciiBannerService.cs`
|
|
- `AudioPlaybackService` — `src/EchoHub.Client/Services/AudioPlaybackService.cs`
|
|
- `ChannelService` — `src/EchoHub.Server/Services/ChannelService.cs`
|
|
- `ChatService` — `src/EchoHub.Server/Services/ChatService.cs`
|
|
- `ClientEncryptionService` — `src/EchoHub.Client/Services/ClientEncryptionService.cs`
|
|
- `DataMigrationService` — `src/EchoHub.Server/Setup/DataMigrationService.cs`
|
|
- `FileCleanupService` — `src/EchoHub.Server/Services/FileCleanupService.cs`
|
|
- `FileStorageService` — `src/EchoHub.Server/Services/FileStorageService.cs`
|
|
- `IChannelService` — `src/EchoHub.Core/Contracts/IChannelService.cs`
|
|
- `IChatService` — `src/EchoHub.Core/Contracts/IChatService.cs`
|
|
- `IMessageEncryptionService` — `src/EchoHub.Core/Contracts/IMessageEncryptionService.cs`
|
|
- `IUserService` — `src/EchoHub.Core/Contracts/IUserService.cs`
|
|
|
|
---
|
|
*Generated by AurionDocs on 2026-07-23 09:35:48 UTC*
|