Real-time messenger with video calls on Azure

Calls
WebRTC
Delivery guarantee
Outbox
Cloud
Azure
Open project

Task

Build a full messenger: private and group chats, attachments, presence, audio/video calls, and moderation — deployed in the cloud.

Solution

.NET 10 with Clean Architecture and CQRS, SignalR for messages and call signaling, WebRTC for calls, an outbox for reliable delivery; Angular 21 client; Azure infrastructure.

Architecture

The backend is split into Domain, Application, Infrastructure, and WebAPI layers; every operation is a MediatR command or query. Messages go through REST with an idempotency key and are delivered to recipients via SignalR — so a reconnect never loses or duplicates a message. Domain events are written to an outbox table and published by a background dispatcher.

Presence and group call rooms live in Redis. 1:1 and group calls use WebRTC: the hub only relays signaling, media goes peer-to-peer. In production the hub runs on Azure SignalR Service, so the App Service itself holds no long-lived connections.

Authentication is Microsoft Entra External ID (OIDC, JWT) with a role-based admin panel: a superadmin can ban accounts and moderate content. Avatars and attachments are stored in Azure Blob Storage, secrets in Key Vault, telemetry goes to Application Insights through OpenTelemetry.

Need something similar?

Tell us about your task — we’ll reply with a timeline and cost estimate.

Discuss your project