Versionierte Dokumentation — aus den Repositories, die du schon hast
duxt ist ein Nuxt-Layer: erweitern, und dein docs/-Ordner wird zur Website — mit Theme, Suche, API-Referenz und llms.txt. Zeig damit auf andere Repositories oder auf Tags desselben, und jedes wird zu einer Version.
- Zeile Konfiguration
- 1
- Sprachen mitgeliefert
- 7
- lizenziert, quelloffen
- MIT
Live-Demo
Einrichtung
Eine Zeile, und der Ordner ist eine Website
duxt ist ein Nuxt-Layer: Erweitern bringt Theme, Seiten, Komponenten und Build-Schritte auf einmal — und lässt jedes davon ersetzbar.
- Kein Generator, nichts zum Ejecten — dein Repository behält seine eigenen Dateien.
- Eine Komponente überschreiben heißt: die eigene an denselben Pfad legen.
- Baut zu einer statischen Seite — deploybar überall, wo Nuxt läuft.
export default defineNuxtConfig({
extends: ['@kirchdev/duxt']
})
Quellen
Mehrere Repositories, mehrere Versionen, eine Liste
Eine Quelle ist ein Repository und die Refs, die daraus veröffentlicht werden. duxt macht daraus eine Collection je Version und Repository — samt der URL-Präfixe, die sie trennen. Entschieden zur Build-Zeit, damit zur Laufzeit nichts aufgelöst wird.
- Klonen, Auth für private Repos und Caching kommen von Content v3 selbst — nicht nachgebaut.
- Eine einzelne Quelle braucht gar kein Präfix — ein Segment mit nur einem Wert unterscheidet nichts.
- Der Umschalter bleibt auf der Seite, die du liest — und sagt es, wenn es sie dort nicht gibt.
sources: [
// The repository you are standing in.
{ path: 'docs' },
// Another one, at three of its tags.
{
repo: 'acme/api',
path: 'docs',
refs: [
{ branch: 'main', status: 'upcoming' },
{ tag: 'v2.0.0' },
{ tag: 'v1.4.0', status: 'eol' }
]
}
],
sourceOptions: { defaultRef: 'v2.0.0' }
API-Referenz
Ein OpenAPI-Dokument, veröffentlicht als Seiten
Zeig mit einer Quelle auf die Datei, und duxt baut daraus eine Übersicht, eine Seite je Tag und eine je Operation — mit aufgelösten Schemas, benannter Security und abgeleiteten Beispielen. Das Ergebnis ist eine ganz normale Collection, und genau das ist der Punkt.
- Die Suche findet sie, llms.txt listet sie, die Sitemap führt sie.
- Versioniert wie die Prosa: Der Umschalter wechselt zwischen zwei Versionen desselben Endpunkts.
- Steht neben deinem Markdown — eine Operationsseite kann eigene Prosa tragen.
Ausprobieren
Ein Client, der den echten Request schickt
Jede Operationsseite bringt einen Client mit. Parameter ausfüllen, den Body gegen sein Schema bearbeiten, aus dem eigenen Browser abschicken — und die Antwort neben dem Beispiel lesen, das sie erzeugt hätte.
- Sieben Beispiele ab Werk, zwölf mitgeliefert, oder ein eigenes — mitgeschrieben beim Tippen.
- Der Body-Editor ist CodeMirror, bei Bedarf geladen: Eine Seite ohne Endpunkt lädt davon nichts.
- Dein Token bleibt im Browser — es gibt hier keinen Server, an den es ginge.
Anfrage senden
In deinem Stack
Derselbe Request, in deiner Sprache
Kein Beispiel für einen Request wie den obigen — genau dieser. Der gewählte Server, das eingetippte Token, der bearbeitete Body — bei jedem Tastendruck neu geschrieben, in den Client, in den du ihn einfügen wirst.
- Eine Komponente — Beispiel und Button können gar nicht auseinanderlaufen.
- Eigene über `requestSamples` ergänzen — oder die weglassen, die deine Leser nicht nutzen.
Beispielanfrage
curl '/demo/echo' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer demo-token' \
-d '{
"reference": "HB-1042",
"mode": "sea"
}'Maschinenleser
Auch für das Modell geschrieben, das mitliest
Derselbe Inhalt, ein zweites Mal veröffentlicht in den Formen, die eine Maschine liest: ein Index unter llms.txt, die ganze Seite unter llms-full.txt, jede Seite als eigenes Markdown — und eine MCP-Route, die ein Assistent durchsuchen kann.
- Build-Ausgabe, kein Laufzeitdienst — die Dateien liegen mit den Seiten im CDN.
- Jede Seite hat ein „als Markdown kopieren“ — und einen Link, der sie in einem Assistenten öffnet.
- Die MCP-Route liefert dieselben Collections, die auch die Seite abfragt — eine Quelle, zwei Leser.
Funktionen
Erweitern statt generieren
Eine Zeile Konfiguration bringt Theme, Seiten und Komponenten — jede Datei bleibt überschreibbar.
Quellen als Liste
Eine Deklaration pro Quelle statt einer Collection pro Version und Repository.
Versionen zum Umschalten
Ein Tag wird zur Version — der Umschalter bleibt auf der Seite, die du liest.
Mehrsprachig ab Werk
Die Oberfläche ist übersetzt; deine Seiten bekommen Locale-Präfix und hreflang.
Git-nativ, nicht nachgebaut
Branches, Tags, private Repositories und Caching kommen aus Content v3 selbst.
shadcn-vue
Komponenten werden kopiert, nicht importiert. Umgestalten heißt eine Datei bearbeiten.
Komponenten in Markdown
MDC kommt mit Content — eine Vue-Komponente per Block-Syntax aufrufen.
Maschinenlesbar
llms.txt und eine MCP-Route über denselben Inhalt, geplant als Build-Ausgabe.