Documentation, without the baggage.

Write Markdown in a folder and get a complete documentation site: search, navigation, a table of contents and ready-made components. Change what you need in one config file, not by taking the framework apart.

bash
npm create ctrlaltdoc@latest my-docs

Free and MIT licensed. Requires Node.js 20.19+ or 22.12+.

The real Installation page, built with ctrl alt doc.

Your docs are just Markdown.

Folders become sidebar sections and files become pages. A small _category.yml sets a section’s label, order and badge, and frontmatter covers the rest. There’s no routing to write and nothing to wire up.

  • docs/index.md / Your home page
  • docs/getting-started/index.md /getting-started A category
  • docs/getting-started/installation.md /getting-started/installation A page inside it
  • docs/getting-started/_category.yml Label, order, badge Sidebar settings

Everything a docs site needs. Already there.

Search

Readers press / from any page and jump straight to the heading that matches.

Navigation from folders

The sidebar, breadcrumbs, and previous and next links follow your docs/ directory.

Table of contents

Every page gets an “On this page” list built from its headings.

Components in Markdown

Callouts, tabs, steps, cards, details and figures, written as simple ::: blocks.

Code that copies

Syntax highlighting and a copy button on every code block.

Light and dark

Both themes are built in, and the site remembers which one each reader picked.

Your fonts and colours

Swap fonts and override styles with plain CSS, without touching the framework.

Svelte when you need it

Drop your own Svelte components into a page when Markdown isn’t enough.

A documentation API

One-line routes serve search, pages, and navigation as JSON, so other tools can read your docs.

Configure, don’t eject.

Everything you can change goes through one public defineConfig() API in ctrlaltdoc.config.ts: title, logo, social links, footer, icons and callouts. Style overrides live in a plain CSS file. The framework stays an npm dependency, so updating it is a version bump.

See every option
ctrlaltdoc.config.ts
import { defineConfig } from 'ctrl-alt-doc';

export default defineConfig({
  title: 'My Documentation',
  description: 'Documentation for my project.',
  theme: { sidebar: true },
  navbar: {
    logo: '/logo.svg',
    socials: { github: 'https://github.com/owner/project' }
  },
  callouts: {
    note: { label: 'Note', icon: 'info' }
  }
});

Up and running in four commands.

You need Node.js 20.19+ or 22.12+. Everything else comes with the project.

bash
npm create ctrlaltdoc@latest my-docs
cd my-docs
npm install
npm run dev
  1. 01

    Create

    Run the project creator. It asks for a name, a site title and an optional GitHub link; press Enter to accept its suggestions.

  2. 02

    Write

    Start the dev server and add Markdown files to the docs folder. Each folder becomes a sidebar section.

  3. 03

    Ship

    It’s a standard SvelteKit project. Build it and deploy it with the adapter for your host.

Yours to keep.

ctrl alt doc is a dependency, not a platform. It helps you publish your docs and then gets out of the way.

Read the philosophy
  • Plain Markdown.

    Your content is ordinary files in your repository, with a few ::: blocks where you want them.

  • No ejecting.

    You change things through configuration and CSS, never by copying the framework into your project.

  • Open source.

    MIT licensed and developed in the open on GitHub.

  • Your hosting.

    There’s no platform or account. The site is yours to build and host wherever you like.