Skip to content
duxt

Installation

Add the layer, extend it, write Markdown.

Add the dependency

pnpm add -D @kirchdev/duxt

Extend the layer

export default defineNuxtConfig({
  extends: ['@kirchdev/duxt']
});

Write your docs

Markdown goes in docs/ at the root of your repository — resolved against the repository, not against the directory the site runs in, so a site in a subfolder finds it. A file becomes a page, a folder becomes a section, and frontmatter carries the title, description and icon.

your-project/
  • docs
  • index.md
  • 1.getting-started
  • index.md
  • 1.installation.md
  • 2.guides
  • 1.deploying.md
  • nuxt.config.ts
---
title: Introduction
description: What this project is.
icon: lucide:rocket
---

Your first page.

A numeric prefix orders the tree and is stripped from the URL: 1.getting-started/ is served at /getting-started. Reordering a section therefore never moves a URL — only renaming the part after the dot does.

What the build needs

  • Node 24. The layer reads its database through node:sqlite, so no native SQLite driver is installed or needed.
  • Network access to your sources, if any of them are other repositories, and a token for the private ones — Content reads it from the collection's auth.

What comes with it

The package ships one command, duxt-report, and extending the layer is all it takes to have it:

pnpm exec duxt-report            # what your sources became, as Markdown
pnpm exec duxt-report --json     # the same, unrendered

It prints the resolved collections, everything the build checks and the redirects the pages declare — no dev server, so it runs in CI and in a pipe. See What the build checks.

Result

nuxt dev serves the site. Everything the theme draws is data with a default, so the next step is the one file that overrides it: Configuration.

Was this page helpful?