Skip to content

Repository files navigation

HeyHubs

HeyHubs is a distributed real-time chat platform built on .NET 10. It includes a Blazor Server app, a React client, dedicated API services, a realtime SignalR service, and background workers for media resizing and NSFW analysis.

Runtime target: k3s (Kubernetes)

Aspire usage: local development orchestration only

Current Architecture

  • Local orchestration: .NET Aspire (src/HeyHubs.AppHost)
  • Frontend: Blazor Server (src/HeyHubs.Web) + React (src/HeyHubs.Web.React)
  • Core services: Identity, Room, Chat, Contact, Interest, Content, Media, Settings, Geo, Logging
  • Realtime: src/HeyHubs.Services.Realtime
  • Workers: src/HeyHubs.Workers.ImageResize, src/HeyHubs.Workers.ImageAnalysis
  • Infrastructure: PostgreSQL, Redis, RabbitMQ, MinIO, Coturn, Prometheus, Grafana
  • Deployment platform: k3s (infrastructure/k3s)

For full architecture details, see docs/ARCHITECTURE.md.

Prerequisites

  • .NET SDK 10.0.100+ (repo uses global.json)
  • Docker Desktop (or compatible Docker engine)
  • Optional: make for shortcut commands

Local Development (Aspire)

  1. Restore dependencies:
dotnet restore HeyHubs.slnx
  1. Run AppHost:
dotnet watch --project src/HeyHubs.AppHost/HeyHubs.AppHost.csproj

or:

make watch
  1. Open the Aspire dashboard URL shown in terminal output and start/inspect resources.

Deployment (k3s)

Production/runtime deployments are done via k3s manifests and scripts in infrastructure/k3s/.

Typical entry points:

# apply manifests
kubectl apply -f infrastructure/k3s/heyhubs-k3s.yaml

# helper scripts
bash infrastructure/k3s/deploy.sh
bash infrastructure/k3s/deploy-local.sh

See infrastructure/k3s/README.md for full setup and rollout flow.

Configuration & Secrets

HeyHubs.AppHost uses Aspire parameters for JWT, OAuth providers, MinIO, and VAPID keys.

Set values via one of the following:

  • environment variables
  • .NET user-secrets for AppHost
  • deployment env files for container-based setups

See src/HeyHubs.AppHost/Program.cs for the complete parameter list.

Docker Compose Deployment (Aspire-derived)

Use the generated deployment assets in infrastructure/docker/:

cp infrastructure/docker/.env.aspire.example infrastructure/docker/.env
# edit secrets in infrastructure/docker/.env

docker compose --env-file infrastructure/docker/.env -f infrastructure/docker/compose.aspire.yml build
docker compose --env-file infrastructure/docker/.env -f infrastructure/docker/compose.aspire.yml up -d

More details: infrastructure/docker/README_ASPIRE.md.

Development Commands

# run / watch apphost
make run
make watch

# build
make build
make build-all

# tests
make test
make test-unit
make test-integration

Repository Layout

HeyHubs/
├── src/                    # AppHost, services, shared layers, web apps, workers
├── tests/                  # Unit and integration test projects
├── infrastructure/         # Docker, Aspire manifests, k3s deployment
├── docs/                   # Architecture, infrastructure, testing and standards docs
└── scripts/                # Maintenance and migration scripts

Documentation Index

  • docs/ARCHITECTURE.md — system architecture and service interactions
  • docs/CODEBASE_REFERENCE.md — project-by-project technical reference
  • docs/INFRASTRUCTURE.md — deployment and infra topology
  • docs/TEST_ARCHITECTURE.md / docs/TEST_PLAN.md — testing strategy
  • docs/CODING_STANDARDS.md — coding conventions

About

HeyHubs

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages