feat: Add initial implementation of CI/CD workflows, documentation, and testing framework

This commit is contained in:
HueByte
2026-02-19 05:35:05 +01:00
parent 3188d18da2
commit 56ff6197a2
21 changed files with 888 additions and 2 deletions
+41
View File
@@ -0,0 +1,41 @@
# Architecture
## Overview
EchoHub follows a decentralized model where each server is fully independent. There is no central authority or account federation. Users create one account per server.
## Components
### EchoHub.Core
Shared library containing:
- **Models**: `User`, `Channel`, `Message`, `RefreshToken`
- **DTOs**: Record types for API requests/responses
- **Contracts**: `IEchoHubClient` -- the strongly-typed SignalR client interface
- **Constants**: `ValidationConstants` (shared regex patterns), `HubConstants`
### EchoHub.Server
ASP.NET Core web application:
- **Controllers**: REST API endpoints for auth, channels, users, files, server info
- **Hubs**: SignalR `ChatHub` for real-time messaging
- **Auth**: JWT token service (15-min access tokens, 30-day refresh tokens)
- **Data**: EF Core with SQLite
- **Services**: Presence tracking, file storage, image-to-ASCII conversion
### EchoHub.Client
Terminal.Gui v2 TUI application:
- **UI**: Main window, dialogs, chat renderer with ANSI color support
- **Services**: API client with automatic token refresh, SignalR connection wrapper
- **Themes**: 6 built-in color themes
- **Config**: Client configuration management
## Communication
- REST API for authentication, profile management, channel CRUD, file uploads
- SignalR WebSocket for real-time messaging and presence updates
- JWT tokens passed via query string for SignalR authentication
+31
View File
@@ -0,0 +1,31 @@
# Getting Started
## Prerequisites
- [.NET 10 SDK](https://dotnet.microsoft.com/download)
## Run the Server
```bash
dotnet run --project src/EchoHub.Server
```
On first run, the server automatically:
1. Creates `appsettings.json` from the example config
2. Generates a secure JWT secret
3. Creates the SQLite database with a `#general` channel
## Run the Client
```bash
dotnet run --project src/EchoHub.Client
```
Connect to a server, register an account, and start chatting.
## Build from Source
```bash
dotnet build src/EchoHub.slnx
```
+4
View File
@@ -0,0 +1,4 @@
- name: Getting Started
href: getting-started.md
- name: Architecture
href: architecture.md
+2
View File
@@ -0,0 +1,2 @@
- name: v0.1.0
href: v0.1.0.md
+13
View File
@@ -0,0 +1,13 @@
# v0.1.0 - Initial Release
## Features
- Real-time messaging via SignalR
- JWT authentication with access and refresh tokens
- Channel management (create, set topic, delete)
- File and image uploads with magic-byte validation
- Image-to-ASCII conversion for terminal display
- Presence tracking (online, away, DND, invisible)
- 6 built-in TUI themes
- Rate limiting on auth, upload, and general endpoints
- Self-contained binary releases for Windows, Linux, and macOS
+55
View File
@@ -0,0 +1,55 @@
{
"metadata": [
{
"src": [
{
"src": "../src",
"files": [
"EchoHub.Core/EchoHub.Core.csproj",
"EchoHub.Server/EchoHub.Server.csproj",
"EchoHub.Client/EchoHub.Client.csproj"
]
}
],
"dest": "api",
"properties": {
"TargetFramework": "net10.0"
}
}
],
"build": {
"content": [
{
"files": [
"**/*.{md,yml}"
],
"exclude": [
"_site/**"
]
}
],
"resource": [
{
"files": [
"images/**"
]
}
],
"output": "_site",
"template": [
"default",
"modern"
],
"globalMetadata": {
"_appName": "EchoHub",
"_appTitle": "EchoHub Documentation",
"_enableSearch": true,
"_disableContribution": false,
"_gitContribute": {
"repo": "https://github.com/HueByte/EchoHub",
"branch": "master"
}
},
"markdownEngineName": "markdig"
}
}
+14
View File
@@ -0,0 +1,14 @@
---
_layout: landing
---
# EchoHub Documentation
Welcome to the EchoHub documentation. EchoHub is a decentralized, IRC-like chat application built with .NET 10 and SignalR.
## Quick Links
- [Getting Started](articles/getting-started.md) - Set up and run EchoHub
- [Architecture](articles/architecture.md) - Understand the system design
- [API Reference](api/index.md) - Generated C# API documentation
- [Changelog](changelog/v0.1.0.md) - Release history
+7
View File
@@ -0,0 +1,7 @@
- name: Articles
href: articles/
- name: Changelog
href: changelog/
- name: API Reference
href: api/
homepage: api/index.md