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.