Configuration
Each site has a configuration page in the dashboard at app.mkdn.io/sites/{id}. Changes take effect immediately — the cache is purged on save.
Branding
| Setting | Description |
|---|---|
| Site title | Shown in the browser tab, nav header, and social previews |
| Logo URL | External image URL used as nav logo and favicon fallback |
| Upload logo | Upload a PNG, JPEG, SVG, or WebP (takes priority over URL) |
Theme
mkdn.io supports two theme modes:
- prose (default) — clean typography with responsive layout, perfect for documentation
- components — bring your own React component overrides
Style templates
Pick a preset to quickly apply a coordinated color and font combination:
| Template | Vibe |
|---|---|
| Default | Clean, minimal — cyan accent |
| Midnight | Dark, high-contrast — blue accent |
| Serif | Warm editorial — amber accent |
| Terminal | Monospace hacker — green accent |
| Clean | Business neutral — slate tones |
| Academic | Classic print — structured layout |
Color scheme
Set theme.colorScheme to system (default), light, or dark.
Navigation
Control navigation visibility with theme.showNav (sidebar) and theme.showToc (per-page table of contents).
Custom domain
- Add your domain in the Custom Domain section of the config page
- Create a CNAME DNS record:
yourdomain.com → custom.mkdn.io - Click Check DNS — once verified, your site is live at your domain
Requires a Pro plan or higher.
Per-page frontmatter
Control rendering per page with YAML frontmatter at the top of any Markdown file:
---
title: My Page Title
description: Used in meta tags and social sharing
layout: wide # wide | default
hero_image: /img/hero.png
tags: [guide, api]
---
| Key | Description |
|---|---|
title | Page title (overrides # H1 for <title> tag) |
description | Meta description |
layout | wide removes the max-width constraint |
hero_image | URL for an image shown above page content |
tags | Array of strings shown as pill badges |
mkdnsite.config.ts
For advanced configuration, add a mkdnsite.config.ts to your repository root. This file is read at startup and merged with dashboard settings (dashboard wins on conflicts).
import type { MkdnConfig } from 'mkdnsite'
export default {
site: {
title: 'My Docs',
},
theme: {
mode: 'prose',
colorScheme: 'system',
showNav: true,
showToc: true,
},
} satisfies MkdnConfig
See the mkdnsite documentation for the full config schema.