Configuration
Dune's configuration is layered: simple YAML files for most needs, TypeScript for advanced cases, and environment-specific overrides for deployment.
Config files
config/
├── site.yaml # Site identity: title, URL, taxonomies
├── system.yaml # Engine behavior: cache, debug, languages
└── env/
├── development/
│ └── system.yaml # Dev overrides (debug: true, etc.)
└── production/
└── system.yaml # Production overrides
Merge order
Configuration merges from general to specific. Each layer overrides the previous:
1. System defaults (hardcoded in Dune)
↓ merged with
2. config/system.yaml + config/site.yaml
↓ merged with
3. config/env/{DUNE_ENV}/*.yaml
↓ merged with
4. dune.config.ts (programmatic)
↓ merged with
5. Page frontmatter (per-page)
You only need to set what you want to change. Everything else uses sensible defaults.