Skip to content

What is OINK

A documentation theme that needs nothing but Hugo Extended. Evolved from Docsy, its components are written in Markdown, its assets ship with the theme, and fourteen production sites run on it.

OINK is a standalone Hugo theme for medium and large technical documentation sites. It evolved from Docsy: the content model and the multilingual behaviour are kept, while the shell, navigation, search and content components are replaced.

A consuming site’s only build dependency is one Hugo Extended binary. There is no Node.js, no npm, no PostCSS and no CDN request. Bootstrap, Font Awesome, the fonts, local search, the diagram runtimes and the API reference runtimes are all committed to the theme repository and shipped only to the pages that use them.

Components are not a second template language: > [!NOTE] is a callout, a table with a {.fields} line is a parameter list, and an image followed by {caption=} has a caption. Fourteen production sites run on it today, this one among them.

OINK turns Markdown content, configuration and local assets into one static documentation site
One Hugo build produces a static site ready to host

What the theme provides

  • The documentation and blog shell: navigation, sidebar tree, table of contents, breadcrumbs, pager, dark mode, print view and accessible interaction.
  • The multilingual frame: translation routing, fallback for untranslated pages, language weighting, RTL, and 32 interface language packs.
  • Local runtimes: Mermaid, KaTeX, Markmap, Swagger UI, Redoc, Asciinema, ECharts, Infographic and local full-text search.
  • Content components: callouts, tabs, steps, cards, field lists, file trees, galleries, badges, keys and more — most with a native Markdown form.
  • Content types: beyond ordinary documentation, built-in book numbering and cross-references, release and download pages, data-driven landing pages, and OpenAPI reference pages.

The theme does not handle source hosting or deployment: a site can live on GitHub, GitLab or a private Git server, and the static files Hugo produces can be published anywhere. A site’s own content, brand and business components stay with the site; the theme supplies the shell and the reusable components.

Is OINK for me

A good fit whenA poor fit when
There are many pages and mixed content types: documentation, blog, a book, release pages and an API reference in one siteThere are one or two pages and no need for structured navigation; a README or a lighter Hugo theme is simpler
You need real multilingual support, not a translation link bolted onto an English siteThe site is mostly application UI rather than documentation: OINK can carry the documentation part while business components stay at the site layer
Reproducible builds and network isolation matter, and the build machine has no outbound accessYou need interactive components inside the prose (React / MDX)
Several sites share one shell, so layouts and shortcodes are not copied aroundYou want one switch that swaps in a different look: the theme has no brand switch, and appearance changes go through CSS tokens and partial overrides
The team has no front-end engineers and maintains no Node toolchainYou need a built-in CMS or a WYSIWYG editor

How it differs from other documentation systems

The table below lists structural differences only, and only what can be confirmed from each project’s own documentation and repository. Versions change; check each project’s current documentation before choosing.

DimensionOINKDocsyHextraDocusaurus
Build toolHugo Extended, one binaryHugo Extended + Node/npmHugoNode.js toolchain
Does a consuming site need npmNoYes: Bootstrap and Font Awesome are mounted from node_modules/NoYes
Where front-end assets come fromAll committed to the theme repository; VENDOR.json records version, source, licence and checksumjQuery is loaded from a CDN on every page unconditionally; Mermaid, KaTeX and others also fetch from a CDN at build timePrebuilt artifacts committed to the repositorynpm dependencies
How components are writtenNative Markdown attributes and fences first, 29 shortcodes as the fallbackShortcodes (19)Shortcodes (29) first; callouts also have a > [!NOTE] native formMDX (React components)
MultilingualHugo multilingual + 32 interface language packsHugo multilingual (OINK’s packs are inherited from it)Hugo multilingual + 21 interface language packsBuilt-in i18n framework
Book numbering and cross-references / release and download pages / data-driven landing pagesBuilt into the themeNoneNoneBuild your own or find a plugin

Two qualifications. Per-page Markdown output and llms.txt are not unique to OINK — Docsy and Hextra have them too, and all three need the site to opt in under outputs. Only the last row is exclusive to OINK, and it comes from PGSTY’s own production sites rather than from what a general documentation site needs. The theme’s interactive features are off by default: search, zoom, comments and feedback all require the site to turn them on.

OINK is not a skin layered over Docsy but a theme that forked and evolved separately. Docsy’s source history, its Apache-2.0 obligations and its attribution are kept intact; the details are in License and acknowledgements.

Start here

  • Quick start — install Hugo, clone this site, replace the site details, publish to GitHub Pages.
  • Components — one page per component, source first and rendered result after.
  • Showcase — fourteen production sites and which part of OINK each one uses.

Highlights lists what the theme provides capability by capability, each entry linking to the guide that covers it.

What separates OINK from an ordinary Hugo theme, one item at a time, each linking to the guide that covers it.

Find the OINK production case closest to your documentation, book, landing page, or interactive tool.

Which licence applies to which layer — Apache-2.0 for the theme, CC BY 4.0 for the documentation, and their own terms for every third-party runtime shipped with the theme.