Markdown-native framework
Darkmown
Markdown pages that compile into fast, mostly-static websites, with tiny reactive islands only where the document asks for them.
What to try
TryOpen the docs route, a .wd page full of includes TryOpen a plain .md page and see directives stay inert TryOpen the reactive page: state, keyed loops, scoped sections TryOpen the data page: :fetch, forms into state, persistence TryOpen a hidden route and confirm it 404sLoops 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
This repo doubles as a template — npm run build emits a plain static dist/, so it deploys anywhere that serves files:
Deploy to Vercel Deploy to Cloudflare Star on GitHub
Sprint board
Long-running session sprinting
Darkmown treats sprinting as a visible operating loop, not as hidden recursion inside Markdown.
- PM keeps the acceptance checklist and decides whether the demo proves the promise.
- Development owns compiler, router, runtime, and demo integration.
- Research checks the theory against prior art and keeps naming or platform drift from leaking in.
- Testing owns route, include, asset, and browser smoke evidence.
- Review inspects the final diff and blocks sloppy completion.
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.