Open docs navigation
Implementation

Updated May 13, 2026

8 min read

Markdown docs and blog content

Deploy Markdown and MDX files from local docs or blog folders and render the generated HTML in client sites.

markdown docsmarkdown bloghandover deploy docshandover deploy blogmarkdown html

Handover stores Markdown at deploy time, converts it to HTML, and exposes list/detail endpoints so generated sites can ship docs and blogs without an extra CMS.

Deploy docs and blog folders

Use docs for documentation-style content and blog for articles. The CLI scans nested .md and .mdx files, derives slugs from file paths, and pushes documents to the project with the project API URL/key. No admin session token is needed for deploy endpoints.

pnpm handover deploy --docs ./docs
pnpm handover deploy --blog ./blog
bash

Frontmatter

Frontmatter is optional, but it is the best way to keep titles, excerpts, collection, status, and custom slugs stable across deploys.

---
title: Getting Started
slug: getting-started
excerpt: First steps for your client.
collection: docs
status: published
---

# Getting Started
markdown

Render generated HTML

The SDK exposes listMarkdownDocuments(), getMarkdownDocument(), and getMarkdownHtml(). Generated starters include docs and blog routes that already call these APIs.

const posts = await handover.listMarkdownDocuments("blog");
const html = await handover.getMarkdownHtml("launch-notes");
typescript

Template support

Next.js, Vite React, TanStack Start, and Astro starters all include docs/blog support. Astro uses PUBLIC_HANDOVER_* env vars; Vite React and TanStack Start use VITE_HANDOVER_*; Next.js uses NEXT_PUBLIC_HANDOVER_*.

Source doc: docs/MARKDOWN_CONTENT.md