Why Headless?
Pure JavaScript
UI lives entirely in wwwroot/ – swap in React, Vue, Svelte or vanilla JS without touching backend services.
Minimal Bridge
Tiny JSInterop surface keeps coupling low, performance predictable, and testing straightforward.
Production Structure
Clean folders, service interfaces, publishing scripts, and installer generation included out of the box.
Architecture
Frontend (wwwroot) Bridge (Blazor) Backend (Services)
HTML / CSS / JS <-> JSInterop Calls <-> C# Logic / Models
Framework Agnostic Minimal Surface Extend / Replace
“Headless” here means the native shell exposes services while your web UI owns all presentation.
Features
- ✅ Full separation of frontend & backend
- ✅ Framework-agnostic web UI
- ✅ Strongly typed service layer
- ✅ Simple, testable JSInterop bridge
- ✅ Multi-platform (.NET MAUI targets)
- ✅ Windows installer publishing scripts
- ✅ Clean error propagation & handling
- ✅ Future evolution driven by feedback
See full release history on GitHub Releases.
Quick Start
- Use “Use this template” on GitHub (create your own repo)
- Clone your new repository locally
- Run setup script from repo root (branding / identifiers)
- Run the app
# After creating your own repo from the template
git clone https://github.com/your-org/your-app.git
cd your-app
./Scripts/setup.ps1
dotnet run --project AppShell/AppShell.csproj --framework net9.0-windows10.0.19041.0
Evolution Philosophy
No rigid roadmap. The template evolves through real-world use, community feedback, and practical discoveries. Open an issue to influence direction.
Start Building
Use the native runtime you need today and keep frontend flexibility for tomorrow.
Get the Template