Skip to content

OINK 1.0 · Local-first · Hugo-only

PGSTY OINK

Markdown in. Modern docs out.
Knowledge Publishing Framework

Why OINK

Docs. Engineered.

Everything engineering docs need — built in, kept local, and loaded on demand.

02 / CLEAN BY DESIGN

Clean. Complete.

◇ Modern design. Proven foundation.

Quiet interface. Serious capability.

Beyond docs

Six kinds of content, one shell

Documentation sites rarely stay documentation-only. The shapes that normally need a second tool share this one’s shell, search and outputs.

The shell

Documentation

Sidebar tree, page outline, breadcrumbs, pager, edit and history links — the shell every other content type reuses.

Read the guide

Updates

Blog and RSS

Dated posts, count-sorted tag panels, and a separate feed for each language.

Read the guide

Long-form

Books

Chapter numbers, {#id num=} figures and equations, xref cross-references, and whole-book print.

Read the guide

Publishing

Releases and downloads

One data/download/*.yaml becomes release cards, asset tables and checksums. Publication state is data.

Read the guide

Presentation

Landing pages

Twenty-two server-rendered sections compose a page. The one you are reading is one of them.

Read the guide

OpenAPI

API references

Swagger UI and Redoc as local runtimes. Keep the spec in the repository; it works offline.

Read the guide

Component reference

Twenty-one components, loaded on demand

Each component has its own page and a defined shape in HTML, print, Markdown and RSS. Interactive runtimes ship only on pages that use them.

Markmap

mind maps from headings

Markmap

PlantUML

UML through your own server

PlantUML

Draw.io

diagrams that stay editable

Draw.io

Math

KaTeX at build time

Math

Images

captions · sizing · zoom

Images

Tables

captions · numbers · matrix

Tables

Fields

a table plus {.fields}

Fields

Tabs

fences with {tab=}

Tabs

Steps

a list plus {.steps}

Steps

Cards

a list plus {.cards}

Cards

Badges

inline status, five tones

Badges

Keys

key names and chords

Keys

Include

files, params, build notes

Include

Before you commit

Questions worth asking first

Do I need Node.js, npm or a bundler anywhere?

No. The build dependency is Hugo Extended (0.160.1 or newer). Go is used once, to resolve the theme as a Hugo module; an offline archive or a Git submodule works without it. Interactive features still run JavaScript, but those scripts ship with the theme and attach only to the pages that use them.

I have a Docsy site. How hard is the move?

Content and front matter mostly carry over; the shell, navigation, search and components are replaced. Renamed keys fail the build with the new name, and bin/migrations/oink06.py reports what it would rewrite before it writes anything. Read Upgrade and migration.

Is OINK only for large documentation trees?

No. The example sites run from a two-page project site to a fifteen-hundred-file distribution manual, and one uses OINK for landing pages alone. The shell scales down as well as up.

How does it handle Chinese and other non-Latin content?

Local search uses Lunr for Latin scripts and a substring fallback for CJK, so those pages are searchable without a hosted service. English, Simplified Chinese (zh-cn, zh) and Traditional Chinese (zh-tw) interface text is human-reviewed; 28 more locales share the same key schema. RTL layouts are supported.

What do AI assistants and crawlers get?

With markdown in outputs, every page has an index.md sibling announced by rel="alternate", and the LLMS format writes a site-level llms.txt. The “open in ChatGPT / Claude” page actions exist but are off by default, because they hand the reader’s URL to a third party.

What is the license, and where does Docsy stand?

Apache License 2.0. OINK is a fork of Docsy that evolved independently; Docsy’s history, attribution and Apache-2.0 obligations are preserved, and every vendored runtime is listed with its license in VENDOR.json. See License and acknowledgements.

Start from a repository that already works.Use OINK Starter, replace the identity and content, then publish with a warning-strict Hugo build.