Blake is a Blazor-based static site generator (SSG) that combines Markdown content, Razor templates, and Blazor interactive components. It supports a convention-over-configuration approach and integrates deeply with .NET workflows.
- Working CLI (
blake) for generating new sites, building, and serving content. - Supports content folders (e.g.,
/Posts,/Pages) with per-foldertemplate.razorfiles. - Generates
.razorpages with correct routing (@page) and pre-rendered Markdown. - Generates a strongly-typed
GeneratedContentIndexclass containing page metadata for dynamic navigation and lists. - Builds successfully via Blazor (
dotnet run) after running CLI. - Correct csproj configuration to include
.generatedfiles and exclude templates.
- YAML-based global
config.yamlfile (like Hugo/Jekyll). - Generates a strongly-typed
SiteConfigclass inside.generatedfolder. - Example properties:
Title,Description,Social,Analytics. - Used directly in templates via
@using Generated.
TemplateRegistry.jsonin the root of the project.- Template metadata: name, short-name, description, author, repo URL, last updated, primary category, tags, optional preview URL (not done - considering arbitrary metadata, but I think it's too much just for here; can be in the template's README).
- Community contributes templates via PRs.
- GitHub Actions workflow validates templates: clones, injects test content, runs
blake build,dotnet build, Playwright checks. - CLI supports
--template(registry) and--templateUrl(custom direct URL).
- Templates include a preconfigured MSBuild
Targetthat runsblake buildbefore build. - Allows
dotnet runordotnet watch runto work as if it's a normal Blazor app. - CLI remains useful for explicit build, live serve, or CI.
- Navigation can be generated using
GeneratedContentIndexdata. - Future support for filtering (tags, folders).
- Implement
blake servewith Markdown watch support.- Implement file watcher to rebuild on Markdown changes.
- Integrate with Blazor dev server for live reload.
- Add blake serve command to CLI.
- Implement final template registry CLI integration (
blake new --list,blake new --template, etc.). - Add incremental build support.
- TODO: Need to work out the actual strategy here
- Improve error handling and CLI UX.
- TODO: Add verbosity flags, better error messages.
- TODO: What else?
- Create starter templates (blog, docs, portfolio).
- Starter Tailwind blog template.
- BlakeDocs template for documentation sites.
- BlakePlugin.DocsRenderer
- TODO: What additional templates would be useful? Just as a starter.
- Add contributor documentation and starter guides.
- Dynamic Markdown page generation with correct routing works.
- Blazor build and runtime integration fully confirmed.
- Dynamic nav and metadata proven.
- Plugin architecture validated.
.generated/folder used for all generated.razorand.csfiles.- Templates use YAML frontmatter per file for metadata and global YAML for site config.
- No separate NuGet package needed for MSBuild tasks — logic lives in template
.csproj. - CLI required but designed to feel invisible for most dev workflows.
Markdown + Templates → blake build → .generated/*.razor + .generated/*.cs → dotnet run → Blazor app
✅ This updated plan captures all recent decisions and architecture changes.