Skip to content

Tech Stack

BlazorForge is built on a small, focused tech stack. Every library is chosen for a specific reason. There are no unnecessary dependencies.

BlazorForge targets .NET 9 using Blazor WebAssembly. The project file specifies the target framework as net9.0.

Blazor is Microsoft’s framework for building interactive web applications using C# instead of JavaScript. It has three rendering modes. Blazor Server runs the UI on the server and communicates with the browser through SignalR. Blazor WebAssembly runs the UI in the browser using WebAssembly. Interactive Auto switches between the two based on the connection.

BlazorForge uses Blazor WebAssembly as its primary target. The components also work in Blazor Server and Interactive Auto without modification.

Blazor WebAssembly compiles C# code to WebAssembly, a binary instruction format supported by all modern browsers. When the user opens the site, the browser downloads a small .NET runtime, the compiled application code, and the static assets. After the runtime initializes, the app runs entirely in the browser.

There is no server component for the frontend. The backend can be any API, or there can be no backend at all if the site is fully static.

BlazorForge uses the Microsoft.AspNetCore.Components.WebAssembly package, version 9.0.0. It also uses Microsoft.AspNetCore.Components.WebAssembly.DevServer for local development, version 9.0.0.

Markdig is a fast, extensible Markdown processor for .NET. It converts Markdown text into HTML.

BlazorForge uses Markdig in the compiler to convert the body of each Markdown file into HTML. The compiler enables advanced extensions and automatic heading identifiers.

Markdig is a mature library with wide adoption. It supports CommonMark and GitHub Flavored Markdown out of the box.

YamlDotNet is a YAML parser for .NET. It reads YAML text and provides structured access to the data.

BlazorForge uses YamlDotNet to parse the frontmatter of each Markdown file. The frontmatter is YAML, so the library is necessary.

The compiler uses the YamlStream API rather than the deserializer API. This is because the compiler needs to convert YAML scalar values to the correct types manually. For example, YAML true should become a .NET boolean, and YAML 2026-10-16 should become a date string.

System.Text.Json is the built-in JSON library for .NET. It serializes objects to JSON and deserializes JSON to objects.

BlazorForge uses System.Text.Json in two places. The compiler uses it to write metadata JSON files. The services use it to read JSON config and metadata files at runtime.

The compiler configures the serializer to use camelCase property names, ignore null values, and use relaxed encoding so that non-ASCII characters appear as-is.

Decap CMS is a free, open-source content management system for static sites. It provides a browser-based admin panel for editing Markdown and JSON files.

BlazorForge includes Decap CMS as an optional component. It lives in wwwroot/admin/. It is loaded only when the user navigates to /admin/.

Decap CMS talks to the backend through a configurable adapter. BlazorForge supports three backends: local file system for development, GitHub for direct commits, and Git Gateway for Netlify Identity.

Microsoft Fluent 2 is Microsoft’s design system for enterprise applications. It defines the visual language used in Azure Portal, Microsoft 365 admin centers, and other Microsoft products.

BlazorForge follows the Fluent 2 specification for typography, spacing, color, elevation, and motion. The design tokens are implemented as CSS variables at the top of wwwroot/css/style.css.

The theme does not include the official Fluent UI library. Instead, it implements the design principles from scratch using plain CSS and Razor components. This keeps the bundle small and the code easy to read.

BlazorForge follows WCAG 2.1 AA accessibility requirements. Every component uses semantic HTML, ARIA labels on interactive elements, keyboard navigation, and focus management.

There is no accessibility library. The requirements are implemented directly in the components.

BlazorForge does not include any third-party JavaScript libraries. There is no React, Vue, Angular, jQuery, Alpine, htmx, or utility library.

The only JavaScript in the project is the Blazor WebAssembly runtime itself, plus a small main.js file that handles a few DOM interactions that are easier to express in JavaScript than in C#.

This design choice means faster load times, fewer security vulnerabilities, and one language for the entire codebase.

BlazorForge does not include Tailwind CSS, Bootstrap, Bulma, or any other CSS framework. All styles are written from scratch in a single stylesheet.

This keeps the CSS bundle small and gives complete control over the design system.

The theme itself does not require Node.js. You can build and run BlazorForge without ever installing Node.js.

Node.js is only needed if you want to run Decap CMS in local mode. The Decap server is a small Node.js application. If you only deploy the site without using the CMS, you do not need Node.js.

BlazorForge does not use a database. All content is stored as files. This makes the theme portable, version-controlled, and easy to migrate.

The complete package list for the Blazor project.

Microsoft.AspNetCore.Components.WebAssembly version 9.0.0.

Microsoft.AspNetCore.Components.WebAssembly.DevServer version 9.0.0.

The complete package list for the Tools project.

Markdig for Markdown processing.

YamlDotNet for YAML parsing.

System.Text.Json is part of the .NET runtime.

There are no other dependencies.

BlazorForge runs on Windows, macOS, and Linux. The .NET SDK is available for all three.

The deployed site runs in any modern browser. Chrome, Edge, Firefox, and Safari are supported on the last two versions.

Mobile browsers are supported on iOS Safari and Android Chrome.