⚡ 50MS BUILD • PURE C# SLIM • BALZOR KILLER

BUILT IN
C#
NOT WASM.

DAX Dotenet by AXcora

Pure C# static site generator. Single file Program.cs 800 lines. No Node, no Blazor WASM, no hydration. dotnet run -- build → 11 pages in 120ms.

◍ 0KB JS◍ 50ms Load◍ CMD Native◍ SEO Ready◍ MIT
axcora@dotnet_ssg ~/dax
# dax version $ git clone https://github.com/mesinkasir/dax.git $ cd dax $ dotnet publish -c Release -o . $ dax build # upload your site folder on hosting $ dax start # run on your localhost:8080 # slim version $ git clone https://github.com/mesinkasir/dax.git $ cd dax $ dotnet run -- build # upload your site folder on hosting $ dotnet run -- start # run on your localhost:8080 $ dax build [DAX] loaded yaml: config [DAX] built / → home.dax [DAX] built /posts/hello-dax/ → post.dax [DAX] built /tags/csharp/ → tag.dax [DAX] built sitemap.xml + rss.xml [DAX] 11 pages in 127ms ✓ $ dax start → http://localhost:8080/ watching...
FEATURES — ZERO BLOAT

Everything you need, nothing you don't.

AUTO SEO

Auto SEO injection script generates sitemap.xml, robots.txt, rss.xml, meta tags, og:image, twitter:card. No config needed.

AUTO COLLECTIONS

content/services/jas.md → { { collections.services } } auto. No config, Jekyll style but faster.

JAMTSACK CONCEPT

Working with content/, templates/, public/ like Jekyll, Hugo, Eleventy. No Node, no Blazor, no hydration.

FREE NESTED FRONTMATTER

hero: list: [{name,url,meta:{deep:{level:3}}}] unlimited depth, no fixed schema.

TAGS + PAGINATION

tags: [csharp] → /tags/csharp/ auto. pagination:6 → /posts/page/2/

YAML + JSON AUTO

_data/*.yaml, *.json → { { config.list }}, { { metadata.title }} directly in templates.

0KB HYDRATION

Pure HTML output. No blazor.web.js, no WASM, Lighthouse 90+, instant SEO.

CMD NATIVE

Windows CMD, Linux, macOS. No MinGW, no make. Just dotnet SDK.

COMPARE DAX VS BLAZOR

.NET is heavy. DAX is not.

DAX Pure C#Blazor SSGCAX (C)
Load50ms2000ms WASM boot50ms
JS Payload0KB512KB + _framework0KB
Build Cmddotnet run -- build (0.12s)dotnet publish (8s)make + gcc (1.2s)
Windows CMDWorksHeavy SDKNeed MinGW
Vercel Deploydotnet preinstalled ✓WASM host neededNo GCC = fail
Nested YAMLUnlimited depthJSON onlyDepth 2 + segfault
GET STARTED

Build your site in 6 steps.

CONFIGURATION

Open on _data/metadata.yaml and update site_url, title, description, author, social links and other settings.

STATIC PAGE

To create a static page, add a .md file in content/ folder. example content/about.md → /about/

COLLECTION POSTS

To create a collection item, add a .md file in the collection's folder. example content/posts/hello.md → /posts/hello-dax/

COLLECTION PAGE

To create a collection page, add a .md file in content/ folder. example content/posts.md → /posts/

PUBLIC FOLDER

To add static assets, put them in public/ folder. example public/css/style.css → /css/style.css

DEPLOY PROJECT

To deploy your project, upload the site/ folder to your hosting. example vercel.json, netlify.toml, .github/workflows/deploy.yml are ready to use.

DOCUMENTATION — FULL GUIDE

Complete DAX docs

1. What is DAX?
DAX = Pure C# Slim Static Site Generator. 1 file Program.cs ~800 lines. Inspired by CAX (C language) but rewritten for .NET ecosystem so Windows users don't need MinGW/make. Outputs pure HTML to site/ folder. No JS runtime, no WASM. Use case: blogs, docs, portfolios, landing pages where you need 50ms load and perfect SEO, not a dashboard app.
2. Requirements & Install (.NET SDK)
Requirements: .NET SDK 8.0 or 9.0 only. Windows: https://dotnet.microsoft.com/download → SDK 9.0 .exe → dotnet --version macOS: brew install dotnet@9 or .pkg from site Linux: sudo apt install dotnet-sdk-9.0 Then Open terminal:
git clone https://github.com/mesinkasir.dax.git
cd dax
dotnet run -- build  → builds to site/
dotnet run -- start  → dev server http://localhost:8080/
3. Folder Structure Explained
│   Dax.csproj, Program.cs, README.md, vercel.json, netlify.toml
├───.github/workflows/deploy.yml → GitHub Pages deploy
├───_data/ → metadata.json, config.yaml, nav.json → auto DAX .NET Static Site Generator, 
├───content/ → index.md → /, about.md → /about/, posts.md (collection controller) + posts/hello.md → /posts/hello-dax/
├───templates/layouts/ → base.dax, home.dax, posts-list.dax, post.dax, tag.dax, tags-list.dax
├───templates/partials/ → header.dax, footer.dax, seo.dax
├───public/ → css/style.css, img/ → copied verbatim to site/
└───site/ → generated output (gitignored)
.gitignore must include: bin/, obj/, site/, *.exe, *.
4. Content & Frontmatter (Free Nested)
Any .md in content/ with frontmatter:
---
title: Hello DAX
date: 2026-08-03
tags: [csharp, dax]
layout: minimal/post.dax
hero:
  title: Welcome
  list:
    - name: GitHub
      url: https://github.com
      meta: { icon: github, deep: { level: 3 } }
image: /img/hero.jpg
---

# Markdown here → { { content }}

In template: { { hero.title }}, { % for item in hero.list %}{ { item.name }} - { { item.meta.deep.level }}{ % endfor %}
Unlimited nesting, no fixed schema like Blazor.
5. Templates, Loops & Includes
Base template: templates/layouts/base.dax contains placeholder.
Includes: { % include header.dax %}

Loops: 
{% for post in collections.posts limit:3 %}
  { { post.title }} - { { post.date }}
{ % endfor %}

{ % for n in config.list %}
  { { n.title }} → { { n.url }}
{ % endfor %}

Condition: { % if image %}< img src="{ { image }}" >{ % endif %}

Variables: { { title }}, { { metadata.site_url }}, { { pagination.items }}, { { all_tags }}
6. Collections, Tags, Pagination, SEO
Collections: Any folder in content/ e.g. content/services/ → collections.services auto sorted by date desc. Controller file: content/posts.md
---
title: Blog
layout: posts-list.dax
collection: posts
pagination: 6
---
→ Generates /posts/ + /posts/page/2/ + pagination.items, pagination.total_pages, pagination.prev_url, next_url Tags: any post with tags: [csharp] → /tags/ (all_tags) + /tags/csharp/ auto pages using tag.dax layout. SEO: sitemap.xml, robots.txt, rss.xml auto generated from collections.posts. Search watch excludes site/, bin/, obj/ to avoid infinite loop.
7. Why DAX slaps Blazor?
Blazor = SPA framework for interactive apps. Needs 512KB WASM download, _framework/blazor.web.js, boot time 2s, hydration mismatch risk, heavy for SEO. DAX = static output, 0KB JS, 50ms load, HTML only, Lighthouse 100. Benchmark: same blog Blazor: dotnet publish 8s, payload 512KB, first paint 2.1s DAX: dotnet run -- build 0.12s, payload 0KB JS, first paint 0.05s Use Blazor for dashboard. Use DAX for content that must be fast.
8. Deploy (GitHub Pages, Vercel, Netlify, Cloudflare)
GitHub Pages: .github/workflows/deploy.yml → dotnet build → upload site/ artifact → deploy-pages. Vercel: vercel.json
{
  "buildCommand": "dotnet publish -c Release -o bin && ./bin/DAX build",
  "outputDirectory": "site"
}
Netlify: netlify.toml
[build]
  command = "dotnet publish -c Release -o bin && ./bin/DAX build"
  publish = "site"
Cloudflare Pages: same, output site/. No GCC needed unlike CAX.

Run and Try DAX SSG.

MIT open source. Pick minimal (empty) or full blog template. Both work with dotnet run -- build.

MINIMAL STARTER

Clean Minimalis Starter

Get started in seconds. The official clean, minimal starter for DAX SSG — production-ready with _data/, content/, templates/, and public/ pre-configured. - 0KB JS. 50ms Load. Pure HTML + Axcora CSS. No bloat.

git clone https://github.com/mesinkasir/dax.git
cd dax
dotnet publish -c Release -o .
dax build   // 11 pages 127ms
dax start   // localhost:8080

Built for scale. Clean output, semantic HTML, and best practices baked in from day one.

Run DAX Starter Minimal →
DAX PRO

Premium DAX Architecture Service

Premium DAX Architecture Service

Build your project with custom DAX architecture. From bespoke UI and advanced features to full AI and API integration — we handle it all. Our expert team is ready to turn your vision into reality. Let's solve your project challenges and build for a better future.

Consult Now → Hire Now →
PURE C# • 0 DEPS • MIT • RESPONSIVE • NO WASM
DEPLOY ANYWHERE
▲ Vercel
site/
◍ Netlify
site/
⬢ GitHub Pages
deploy.yml
☁ Cloudflare
unlimited bw