mattvanbird.co.uk — site architecture

mattvanbird.co.uk — site architecture An architecture diagram generated by Archify. Markdown articles · src/content/articles/*.md · Architecture component Markdown articles src/content/articles/*.md Generator scripts · articles · SEO · rewrites · Architecture component Generator scripts articles · SEO · rewrites Amplify build · npm ci · vite · sam deploy · Architecture component Amplify build npm ci · vite · sam deploy Readers and crawlers · browsers · bots · LLMs · Architecture component Readers and crawlers browsers · bots · LLMs Amplify Hosting · CDN · rewrites · CSP · Architecture component Amplify Hosting CDN · rewrites · CSP React SPA · Vite · React 19 · router · Architecture component React SPA Vite · React 19 · router ChatApi · .NET 10 · arm64 · SAM stack · mvbblog-chatapi (eu-west-1) ChatApi .NET 10 · arm64 demystify-api · Node 22 · /demystify + /audit · SAM stack · mvbblog-chatapi (eu-west-1) demystify-api Node 22 · /demystify + /audit view-count-api · Rust · provided.al2023 · SAM stack · mvbblog-chatapi (eu-west-1) view-count-api Rust · provided.al2023 Amazon Bedrock · Claude Haiku 4.5 (EU profile) · Architecture component Amazon Bedrock Claude Haiku 4.5 (EU profile) Telegram Bot API · escalation + transcript · Architecture component Telegram Bot API escalation + transcript DynamoDB · view counts · scan cache · Architecture component DynamoDB view counts · scan cache frontmatter generated TS + SEO build/ + rewrite rules sam deploy · 3 functions HTTPS bundle + prerendered HTML POST /chat NDJSON stream view count Converse [ESCALATE] narration 12h cache atomic increment SAM stack · mvbblog-chatapi (eu-west-1) Legend Frontend Backend Database Cloud External

Content is generated, not routed

  • • Markdown frontmatter is the only source of truth
  • • Generators emit articles.generated.ts, sitemap, RSS and llms.txt
  • • One explicit Amplify rewrite per slug: wildcards are only valid at the end of a pattern

Publishing without a redeploy

  • • isPublished() filters on the live clock in the browser
  • • build-articles.mjs deliberately keeps every article so the SPA has something to reveal
  • • A scheduled post rides the SPA fallback until the next build prerenders it

Three public Function URLs

  • • AuthType NONE, each capped with ReservedConcurrentExecutions
  • • CORS is Function URL service config; the functions must not emit Access-Control-* headers
  • • Their hosts are hardcoded in the CSP connect-src, alongside Mixpanel EU