A fully isolated second tenant of the same chat platform

Technologies
Summary
A separate deployment of the same chat platform for hockey clubs, fully isolated from the tennis platform across dev, stg and prod.
This is a separate deployment of the same real-time chat platform, built for hockey clubs. It is fully isolated from the tennis platform, with its own VMs, registry images, secrets and pipelines across dev, stg and prod. The architecture is the same: a .NET backend in Azure Container Registry, an Ubuntu VM with Nginx, Azure Front Door, Blob Storage for uploads, Microsoft SQL Server in a private subnet, SendGrid for bulk email and Cloudflare for DNS. The project shows how to run several tenants of one product as independent stacks.
Details — Tech Stack
13 technologies across 5 layers
frontend
backend
database
cloud
tools
Details — Key Features
Fully isolated from the tennis platform, with its own VMs, registry images, secrets and pipelines
Three environments (dev, stg, prod), each with its own VM, secrets and container image
.NET backend in Azure Container Registry, running on an Ubuntu VM behind Nginx
Azure Front Door for routing, with uploads served from Azure Blob Storage
Microsoft SQL Server in a private subnet, reachable only from the app VM
Bulk email through SendGrid, with DNS on Cloudflare
Same architecture as the tennis platform, run as an independent stack
Methodology
01
Two sports needed the same chat product, but a problem in one tenant must not affect the other.
The hockey platform runs as its own stack, with separate VMs, registry images, secrets and pipelines for dev, stg and prod. Nothing is shared with the tennis deployment.
02
Running a second copy of the platform could easily drift from the first.
Both tenants use the same architecture and the same deploy flow: build, push to ACR, pull onto an Ubuntu VM behind Nginx and Front Door. Only the resources and secrets differ.
Gallery
