How This Site Is Built

.NET 9 Blazor app with a custom Bootstrap theme, Markdown-powered content, hosted on DigitalOcean; project images on Azure Blob Storage; efficient background image; CI/CD via GitHub Actions.

Blazor.NETAzureCI/CDGitHub ActionsOpenTelemetry
August 2025

How This Site Is Built

This site is a focused, production-ready Blazor application designed for clarity, performance, and easy iteration. It was written from the ground up and is currently hosted on DigitalOcean.

Overview

  • Framework: .NET 9 + Blazor with Razor Components (server interactivity)
  • Styling: Bootstrap + a custom theme defined in /wwwroot/css/site.css
  • Content: Markdown files in /wwwroot/content/projects rendered at runtime
  • Observability: OpenTelemetry wired to Azure Monitor/App Insights when configured
  • Hosting: DigitalOcean
  • CI/CD: GitHub Actions (build, test, publish, deploy)
  • Media: Project images are served from Azure Blob Storage. The hero/background image is kept under ~1 MB for quick first load and then cached for 30 days.

Stack details

  • Blazor UI with server interactivity keeps the app responsive while minimizing browser complexity.
  • A few small JavaScript modules enhance visuals and UX (e.g., experienceChart.js, splash.js, theme.js, and a fibonacci canvas demo).
  • Project content is Markdown-driven, converting markdown to HTML at request time.
  • Reliability features include HTTPS redirection, antiforgery and some static asset mapping.
  • Telemetry sending traces/metrics to Azure Monitor when configured.

Hosting and media

  • Hosted on DigitalOcean.
  • Project images live in Azure Blob Storage.
  • The site background is stored locally in the project and optimized to be < 1 MB to minimize bandwidth and improve load time.

CI/CD (GitHub Actions)

On pushes to main:

  1. Build the solution.
  2. Run tests.
  3. Deploy to DigitalOcean via Github Actions.

Local development

  • Run with dotnet run from the web project.

Questions about the setup or improvements you'd like to see? Please reach out.