TheYard's two sites
Pinch or Ctrl+scroll to zoom; the text is selectable.
Source
·
TheYard
TheYard's two sites and The Shed: four names at Wix, one Netlify edge, one web app for every .NET process and the rendering service on one App Service plan, both stores behind it
Two sites and The Shed: one edge, one web app for every .NET process, the rendering service beside it
Read left to right. The edge sends a Yard page to the rendering service and the rest to the web app, saying which name was typed; The Shed's name needs no edge.
The names, at Wix DNS
Four names at the edge, and The Shed's at the web app.
One edge: the Netlify site theyard-edge
Terminates HTTPS, then proxies by Host. Two files in this repository.
Azure: RG-THEYARD-SS, one App Service plan in westus3
Two web apps: every .NET process in one, the service in the other.
theyard.stevenstout.biz
CNAME -> theyard-edge.netlify.app, TTL 30 min
The live site, the name a resume carries.
Its requests get Azure SQL Database when
they name no store.
theyard-cosmos.stevenstout.biz
CNAME -> theyard-edge.netlify.app, TTL 30 min
The second site, since 1.0.0.100. Its
requests get Azure Cosmos DB when they
name no store.
stevenstout.biz and www
A 75.2.60.5 and CNAME -> theyard-edge.netlify.app
Both forward to the live site with a 301,
so a trimmed or retyped address still
lands on the app.
theshed.stevenstout.biz
CNAME -> the one web app, TTL 30 min
The Shed, bound straight to the web app
with App Service's managed certificate. No
edge in front of it.
One certificate
Let's Encrypt, issued and renewed by Netlify
Four names on it: the bare domain, www, theyard
and theyard-cosmos. Adding the alias reissued it
within the minute; nothing was bought.
The rules: edge/_redirects first, then netlify.toml
the first matching rule wins, top to bottom
edge/_redirects:
https://theyard-cosmos.stevenstout.biz/ to the
rendering service as /site/cosmos; / to it as
/site/sql; stevenstout.biz and www, 301 to
theyard.
netlify.toml:
https://theyard-cosmos.stevenstout.biz/* to the
one web app with X-Yard-Host:
theyard-cosmos.stevenstout.biz; then /* to the
same web app with X-Yard-Host:
theyard.stevenstout.biz.
Both proxy rules reach the same address, so each
says which name the visitor typed. Only
netlify.toml can add a header to a proxied
request.
Moved only after the roll it names
edge-branch.yml, after Deploy succeeds
The edge builds from the edge branch, which moves
after Deploy has verified the origin and only when
edge/ or netlify.toml changed: one deploy, 15
credits.
APP-THEYARD-ONE-SS-ZMNETJ67BN5H2
https://app-theyard-one-ss-zmnetj67bn5h2.azurewebsites.net
One process, three names (api/TheYard.Api/SiteHosts.cs).
The name is the Host header, or X-Yard-Host from the
edge, and only a configured name counts.
theyard: Azure SQL Database. theyard-cosmos: Azure
Cosmos DB. An X-Yard-Store header wins over both.
theshed: The Shed's own application, started inside the
process from /app/shed (Composition/ShedMount.cs).
Rolled by Deploy. A web app for containers on
PLAN-THEYARD-SS, one Linux B2, 2 vCPU and 3.5 GB shared
with the rendering service.
APP-THEYARD-RENDER-SS-ZMNETJ67BN5H2
https://app-theyard-render-ss-zmnetj67bn5h2.azurewebsites.net
The rendering service: /site/sql draws for the first
site, /site/cosmos for the second. Its own image
(render/Dockerfile), rolled by Deploy Render on the same
push. Both sites are read from the one web app, each
read naming its store in X-Yard-Store. It opens no
store.
Azure SQL Database
Entra-only, no SQL login
Reached as the managed
identity. West US 3, the
plan's own region.
Azure Cosmos DB
no keys on the account
Reached as the managed
identity. West US 2, one
region from the plan.
HTTPS, then the Host header picks the rule
theshed: HTTPS straight to the web app, with no edge in front
everything but a page: HTTPS with X-Yard-Host
a page on either Yard name: HTTPS to the rendering service, as that site
reads with X-Yard-Store: sql or cosmos
the web app opens both stores, as its managed identity; the service opens neither
Each Yard site is one store's site by its name; a measurement names the other store for one request with X-Yard-Store (ADR: One web app for every .NET process).
The edge retires at the registrar transfer around the end of October 2026; both names then become two records at Cloudflare, and a Worker takes the rendering function with it.
Source: docs/images/two-sites.svg in the repository, drawn by docs/images/two-sites.mjs and redrawn when a name, a rule or a site changes.