๐ A lightweight static site generator for technical documentation.
Dory is a lightweight static site generator built for developers who want fast, clean, and customizable documentation โ without the overhead of server-side rendering, complex CI/CD setups, or cloud-specific constraints.
Built with Preact, Vite, Tailwind CSS, Mermaid, and TypeScript.
We created Dory while building a documentation platform and getting frustrated by bloated frameworks, slow build times, and cryptic deployment errors.
Dory is:
- ๐ง  Simple โ Drop in 
.mdxfiles and configure onedory.json. - โก Fast โ Instant hot reload in dev, quick static builds for prod.
 - ๐ Portable โ No SSR, no lock-in, deploy anywhere.
 - ๐งฉ Flexible โ Hackable theme, readable codebase, minimal magic.
 
demo.mp4
- ๐ Write docs in 
.mdx(Markdown + JSX) - ๐งญ Configure site structure with a single 
dory.json - ๐งช Built-in components for layout, navigation, and code highlighting
 - ๐ Instant hot-reload during development
 - ๐ Mermaid support for diagrams and flows
 - ๐จ Customizable via Tailwind and minimal theme overrides
 - ๐ Deploy to Netlify, Vercel, S3, GitHub Pages โ your call
 - ๐ HTTP client for testing API endpoints (automatic inference from openapi.json)
 
Install Dory globally to use the CLI tool:
npm install -g @clidey/doryOnce installed, you can use the dory command:
Builds your documentation site:
- Checks for 
dory.jsonin current directory - Clears and prepares the 
docsfolder - Copies configuration to 
docsfolder - Runs the build process
 - Creates 
distfolder with build output 
dory buildPreviews the built documentation site:
- Requires 
distfolder (rundory buildfirst) - Starts a local preview server
 
dory previewVerifies that MDX content compiles without errors:
- Silent on success (no output means no errors)
 - Shows detailed error messages on failure
 - Uses the same preprocessing as the main build
 - Perfect for automated testing and debugging
 
# Verify content directly
dory verify:content --content "# Hello World\n\nThis is a test."
# Verify content from file (recommended for complex content)
dory verify:content --file content.mdx
# Development repository usage:
pnpm exec tsx bin/dory.ts verify:content --file content.mdxShows CLI usage information:
dory helpFollow these steps to set up and preview the documentation locally, as well as build a static site for deployment.
Clone the repository to your local machine:
git clone https://github.com/clidey/dory.git
cd doryInstall all required dependencies using pnpm:
pnpm installMake sure you have pnpm installed. If not, you can install it via:
npm install -g pnpmCopy your existing documentation into the ./docs directory:
rm -rf ./docs
cp ../wherever-the-docs-are/. ./docsReplace
../wherever-the-docs-are/with the actual path to your documentation source files.
Start the development server to preview the documentation locally:
pnpm run devThis will launch a local server (typically at http://localhost:3000) where you can preview and edit your documentation in real-time.
To generate a static version of the site for production deployment:
pnpm run buildThis will create a dist directory containing the fully built static site, ready to be served.
You can use our official Docker image clidey/dory to create a static server. Simply create a Dockerfile inside the project and build the following Dockerfile:
FROM clidey/dory
WORKDIR /app
COPY . .
RUN dory build
CMD ["dory", "preview"]You can also build and run the static site inside a Docker container using Nginx:
docker build -f k8s/Dockerfile --tag docs:1.0.0 .docker run -it -p 8080:80 docs:1.0.0The site will be available at
http://localhost:8080inside your browser.
pnpm run buildcreates the static site inside thedistfolder, which can be served using any static file server.- The Docker image uses Nginx to serve the contents of the 
distfolder. 
Weโre actively improving Dory. Hereโs whatโs on deck:
- ๐ Full Documentation โ comprehensive guides, API docs, and examples
 - ๐จ Themes โ full theming support with a flexible theme API
 - ๐ Multi-language Support โ internationalization (i18n) & localization (l10n)
 - ๐ GraphQL Client โ integrated GraphQL playground and client support