The Markdown framework

Markdown that runs

Not just pages — full websites. Routing, state, server calls, embeds, and reactive islands, all from plain Markdown files. No JavaScript or CSS required. Your docs and your code are all just text.

See a whole app in one file Read the docs

A whole framework, in text

Everything a site needs, expressed as Markdown directives. No components, no config, no JSX, no special files:

What to try

TryA whole live app in one .wd file: fetch, loops, nested ifs, a form TryThe docs route — a .wd page built from includes TryA plain .md page where directives stay inert text TryReactive page: state, keyed loops, scoped sections TryData page: fetch, forms, server round-trips, persistence TryA hidden route, to confirm it 404s

Loops that read like prose

@loop is the only loop. Point it at a JSON file, an in-scope value, or a :state list, and the body repeats once per row. Includes inside the loop inherit the loop value:

@loop /features.json into card
@include /feature-card.wd
@endloop

Folder routing without config

Pages come from site/pages, and hidden work is just dot or minus prefixed.

One loop, @loop

Loop a JSON file, an in-scope value, or a :state list — includes inside inherit the loop value.

Colocated behavior

A matching .skin or .js file beside the page is picked up automatically.

Colocated behavior

This button is powered by site/pages/index.js, discovered by matching the page basename:

Deploy in one click

npm run build emits a plain static dist/ — no server, no special runtime — so it deploys anywhere that serves files. This very site is a Darkmown build:

Deploy to Vercel Deploy to Cloudflare Star on GitHub

Built in the open

Darkmown itself was built by a small agent team. The board below is a live @loop over real data — itself a demo of the framework rendering this page:

PMactive lane
Developmentactive lane
Researchactive lane
Testingactive lane
Reviewactive lane

Long-running session sprinting

Darkmown treats sprinting as a visible operating loop, not as hidden recursion inside Markdown.

The standing team size is 4 to 6. If work expands, add a design or architecture lane; if work shrinks, keep PM, development, testing, and review active.