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
- 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.
- .NET SDK 10.0.100+ (repo uses
global.json) - Docker Desktop (or compatible Docker engine)
- Optional:
makefor shortcut commands
- Restore dependencies:
dotnet restore HeyHubs.slnx- Run AppHost:
dotnet watch --project src/HeyHubs.AppHost/HeyHubs.AppHost.csprojor:
make watch- Open the Aspire dashboard URL shown in terminal output and start/inspect resources.
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.shSee infrastructure/k3s/README.md for full setup and rollout flow.
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.
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 -dMore details: infrastructure/docker/README_ASPIRE.md.
# run / watch apphost
make run
make watch
# build
make build
make build-all
# tests
make test
make test-unit
make test-integrationHeyHubs/
├── 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
docs/ARCHITECTURE.md— system architecture and service interactionsdocs/CODEBASE_REFERENCE.md— project-by-project technical referencedocs/INFRASTRUCTURE.md— deployment and infra topologydocs/TEST_ARCHITECTURE.md/docs/TEST_PLAN.md— testing strategydocs/CODING_STANDARDS.md— coding conventions