QuartoDocBuilder.jl

QuartoDocBuilder.jl

QuartoDocBuilder.jl generates a documentation website for a Julia package by building a Quarto project from your docstrings, README.md, NEWS.md and a set of hand-written .qmd pages. It is inspired by R’s pkgdown and serves the same role as Documenter.jl, while letting you reuse everything Quarto already provides: GitHub Pages deployment, themes, dark mode, search and reader comments.

This site is built with QuartoDocBuilder itself — see docs/make.jl for the configuration that produced it.

Features

  • Reference pages generated from Julia docstrings, organized into named groups.
  • Multiple navbar sections with dropdowns (tutorials, how-to guides, explanation, …).
  • Changelog page generated from NEWS.md, with GitHub issue/PR linking.
  • Light/dark mode with automatic Bootswatch theme pairing.
  • Automatic cross-reference autolinking: backticked function mentions become links.
  • Strict mode that validates internal links and fails the build on broken ones.
  • Inventory-based cross-package links via Sphinx objects.inv (the format Documenter publishes).
  • Every built site ships its own objects.inv so other packages can link back to yours.
  • Submodule documentation with collision-safe page names.
  • Multi-version documentation with a version selector dropdown.
  • GitHub Actions workflow generation for automated deployment.
  • Giscus comments and custom theming (colors, fonts, CSS/SCSS).

Installation

using Pkg
Pkg.activate("docs")     # a dedicated docs environment
Pkg.add("QuartoDocBuilder")

You will also need the Quarto CLI installed to render the generated project.

Quick start

Create docs/make.jl:

using MyPackage
using QuartoDocBuilder

config = QuartoConfig(
    module_name = MyPackage,
    repo = "user/MyPackage.jl",
    reference = [
        ReferenceGroup(title = "Core", contents = [:main_func, :helper_func]),
        ReferenceGroup(title = "Utilities", contents = [starts_with("util_")]),
    ],
    sections = [
        SectionConfig(title = "Tutorials", dir = "tutorials", order = 1),
        SectionConfig(title = "How-to Guides", dir = "how-to", order = 2),
    ],
    strict = true,   # fail the build on broken internal links
)

quarto_build_site(config)

Then build and preview:

julia --project=docs docs/make.jl   # writes the Quarto project under docs/
cd docs && quarto preview           # or: quarto render

Documentation

Full documentation, tutorials and how-to guides are at https://vituri.github.io/QuartoDocBuilder.jl/.