Installation
Install Deno
Dune runs on Deno 2.x. If you don't have it yet:
# macOS / Linux
curl -fsSL https://deno.land/install.sh | sh
# Windows (PowerShell)
irm https://deno.land/install.ps1 | iex
# Homebrew
brew install deno
Verify your installation:
deno --version
# deno 2.x.x
Create a new site
dune new my-site
cd my-site
This scaffolds a minimal Dune site:
my-site/
├── dune.config.ts # Site configuration (programmatic)
├── content/ # Your content lives here
│ └── 01.home/
│ └── default.md # Your homepage
├── config/
│ ├── site.yaml # Site identity (title, URL, taxonomies)
│ └── system.yaml # Engine behavior (cache, debug, languages)
└── themes/
└── default/ # Starter theme with JSX templates
├── templates/
│ └── default.tsx
└── theme.yaml
Start the dev server
dune dev
Open http://localhost:8000. You should see your homepage.
The dev server watches for changes — edit content/01.home/default.md and your browser will refresh automatically.
What just happened?
- Dune scanned the
content/directory and built a content index — a lightweight map of every page, its route, and its frontmatter - It loaded
config/site.yamlandconfig/system.yaml, merging them with defaults - It started a Fresh 2 server with a catch-all route that resolves URLs against the content index
- When you visited
/, Dune found01.home/default.md, loaded its Markdown, rendered it to HTML, and injected it into thedefault.tsxtemplate from your theme