undox

Crates.ioundox
lib.rsundox
version0.1.8
created_at2025-12-14 04:59:50.66169+00
updated_at2025-12-16 01:36:02.790482+00
descriptionA static site generator for multi-repo documentation
homepagehttps://undox.dev
repositoryhttps://github.com/undox-rs/undox
max_upload_size
id1983808
size794,500
Michelle Tilley (BinaryMuse)

documentation

README

undox logo

undox is a batteries-included static site generator for documentation, with first-class support for aggregating content from multiple repositories.

This project is in early development. This readme is aspirational. Expect frequent breaking changes and missing features.

Features

  • Multi-repo support - Combine docs from multiple repositories into a unified site
  • Markdown with YAML front matter
  • Syntax highlighting for 80+ languages via tree-sitter
  • Full-text search powered by Pagefind
  • Dark mode with system/light/dark toggle
  • Auto-generated navigation from file structure
  • Clean URLs (/guide/config instead of /guide/config.html)

Installation

cargo install undox

Or build from source:

git clone https://github.com/binarymuse/undox
cd undox
cargo build --release

Quick Start

# Initialize a new docs site
undox init my-docs
cd my-docs

# Build the site
undox build

# View at _site/index.html

Configuration

Create undox.yaml in your project root:

site:
  name: "My Documentation"
  url: "https://docs.example.com"

sources:
  - name: docs
    path: ./content

Multiple Sources

sources:
  - name: main
    path: ./content
    url_prefix: /

  - name: cli
    path: ../cli-repo/docs
    url_prefix: /cli

  - name: api
    path: ../api-repo/docs
    url_prefix: /api

Writing Content

Create markdown files in your content directory:

---
title: Getting Started
description: Learn how to use the project
---

# Getting Started

Your content here...

Front Matter

Field Description
title Page title (overrides filename)
description Meta description for SEO
hidden Hide from navigation
slug Custom URL slug

Themes

Themes are configured via undox-theme.yaml at the theme root:

name: my-theme

pagefind:
  root_selector: "main"
  exclude_selectors:
    - "nav"
    - ".sidebar"

License

MIT

Commit count: 0

cargo fmt