A Vue-first static site generator for documentation and content-focused websites.
Write in Markdown. Develop with real SSR. Extend everything through public APIs.
Important
KawaPress is in beta. It is ready for testing and early projects, but APIs may change before 0.1.0. Please pin the version when adopting it today.
KawaPress turns Markdown into pre-rendered Vue websites. It keeps the familiar simplicity of a documentation generator while giving themes and plugins the same public extension points used by the official experience.
- Real SSR during development — every initial request is server-rendered, so SSR-only problems appear before build or deployment.
- A complete default experience — the built-in nagi (凪) preset includes responsive documentation layouts, dark mode, local search, syntax highlighting, Twoslash, code groups, multilingual navigation, and more.
- Vue from end to end — Markdown becomes Vue components, Vue Router handles navigation, and regular Vue SFCs fit naturally into content.
-
AI-ready output — nagi generates page-level Markdown, locale-aware
llms.txtandllms-full.txt, plus built-in copy actions. - One extension model — Generator Plugins, Runtime Plugins, and Presets cover build-time behavior, the Vue runtime, themes, and reusable product setups without private theme hooks.
KawaPress is an independent project. It is not a VitePress fork or a drop-in replacement, and it intentionally does not use VitePress configuration.
You need Node.js 22.12 or newer.
mkdir my-kawapress-site
cd my-kawapress-site
pnpm init
pnpm add --save-dev kawapressCreate kawapress.config.ts:
import { nagi } from 'kawapress/nagi'
export default nagi({
title: 'My Docs',
})Create index.md:
---
layout: home
title: My Docs
---
# My Docs
Welcome to my KawaPress site.Start the development server:
pnpm exec kawapress devBuild static files into dist:
pnpm exec kawapress buildThe deployed output is static and does not require a Node.js server. npm and Yarn commands are available in the Getting Started guide.
If your site directly imports Vue APIs or Vue components, also install
vueas a development dependency.
| Area | Included capability |
|---|---|
| Authoring | Markdown, frontmatter, Vue in Markdown, file-based routing, data loaders |
| Rendering | Shared development/build SSR semantics, hydration, Vue Router navigation |
| Documentation UI | nagi layouts, responsive sidebar, page outline, dark mode, i18n |
| Content | Shiki, Twoslash, code groups, code copy, containers, GitHub alerts |
| Discovery | Lazy local search and locale-aware navigation |
| AI consumption | Page .md, llms.txt, llms-full.txt, copy actions |
| Styling | UnoCSS integration with sensible nagi defaults |
The kawapress package includes nagi and its official plugins. A basic site only needs this one package; advanced users can compose the individual @kawapress/* packages directly.
KawaPress keeps extension boundaries explicit:
- a Generator Plugin extends configuration, Markdown, page data, Vite, and build artifacts;
- a Runtime Plugin extends the real Vue App and Vue Router in both SSR and the browser;
- a Preset combines configuration and plugins into a ready-to-use experience such as nagi.
A logical plugin is installed once and can provide both generator and runtime behavior. Learn more in the Plugin System guide.
- Getting Started
- What is KawaPress?
- Markdown Extensions
- Internationalization
- Plugin System
- Theme Customization
Issues and pull requests are welcome. For a large feature, please open an issue first so the direction can be agreed on before implementation.
pnpm install
pnpm lint
pnpm typecheck
pnpm test
pnpm buildKawaPress uses Node.js 22.12 or newer and pnpm 11.22.0 for repository development.
MIT © KawaPress contributors