Aller au contenu
duxt
v0.9.0 publiée

Une documentation versionnée, depuis les dépôts que vous avez déjà

duxt est une couche Nuxt : étendez-la et votre dossier docs/ devient un site, thème, recherche, référence d'API et llms.txt compris. Pointez-la vers d'autres dépôts, ou vers des tags du même, et chacun devient une version.

ligne de configuration
1
langues fournies
7
sous licence, open source
MIT

Démo en direct

http://localhost/fr-FR/getting-started
Ouvrir

Installation

Une ligne, et le dossier devient un site

duxt est une couche Nuxt : l’étendre apporte le thème, les pages, les composants et les étapes de build d’un coup, et laisse chacun remplaçable.

  • Aucun générateur, rien à éjecter : votre dépôt garde ses propres fichiers.
  • Remplacez un composant en plaçant le vôtre au même chemin.
  • Se compile en site statique, déployable partout où Nuxt va.
Installation
export default defineNuxtConfig({
  extends: ['@kirchdev/duxt']
})
export default defineAppConfig({
  duxt: {
    title: 'Acme',
    // The folder you already write in.
    sources: [{ path: 'docs' }]
  }
})

Sources

Plusieurs dépôts, plusieurs versions, une seule liste

Une source est un dépôt et les versions, tags ou branches à publier. duxt transforme la liste en une collection par version et dépôt et en préfixes qui les distinguent, le tout au build.

  • Clonage, authentification des dépôts privés et cache viennent de Content v3.
  • Une source unique n’a besoin d’aucun préfixe : un segment à valeur unique ne distingue rien.
  • Le sélecteur reste sur la page que vous lisez, et le dit quand elle n’y existe pas.
URL et versions
sources: [
  // The repository you are standing in.
  { path: 'docs' },

  // Another one: retain the newest patch in every minor line.
  {
    repo: 'acme/api',
    path: 'docs',
    releases: { select: 'minor' },
    refs: [{ branch: 'main', status: 'upcoming' }]
  }
]
# What the build publishes from the list beside this.

/guides/deploying          # this repository, no prefix
/api/guides/retries        # acme/api at the newest selected release
/api/main/guides/retries   # the branch, marked "upcoming"
/api/v1.4.0/guides/retries # another retained minor line

Référence générée

Une référence depuis les artefacts que vous livrez déjà

OpenAPI devient des pages d’opérations et de schémas, Bruno des requêtes et téléchargements, et tfplugindocs une référence de provider. Tout reste une collection Content ordinaire.

  • OpenAPI fournit opérations, schémas, exemples et modèles de sécurité.
  • Bruno conserve dossiers, documentation et variables, avec un téléchargement expurgé.
  • tfplugindocs conserve catégories et titres du provider sans aplatir l’arbre Markdown.
Comment fonctionne la référence générée
openapi: 3.1.0
info:
  title: Acme API
  version: 2.4.0
paths:
  /widgets:
    get:
      operationId: listWidgets
meta {
  name: List widgets
  type: http
  seq: 1
}

get {
  url: {{baseUrl}}/widgets
  body: none
  auth: inherit
}
---
page_title: acme_widget Resource
subcategory: Widgets
---

# acme_widget (Resource)

Creates and manages an Acme widget.

Essayer

Un client qui envoie la vraie requête

Chaque page d’opération embarque un client. Remplissez les paramètres, modifiez le corps face à son schéma, envoyez depuis votre navigateur, et lisez la réponse à côté de l’exemple qui l’aurait produite.

  • Sept exemples d’origine, douze fournis, ou le vôtre, réécrits à la frappe.
  • L’éditeur de corps est CodeMirror, chargé à la demande : une page sans endpoint n’en télécharge rien.
  • Votre jeton reste dans votre navigateur : il n’y a ici aucun serveur à qui l’envoyer.
Comment le client fonctionne

Envoyer une requête

Authentification

Ce que vous saisissez ici reste dans cet onglet, n’est jamais conservé et n’est envoyé qu’au serveur que vous avez choisi.

La requête est envoyée par votre navigateur, directement à ce serveur.

Dans votre stack

La même requête, dans votre langage

Pas un exemple de requête comme celle du dessus, mais cette requête-là. Le serveur choisi, le jeton saisi et le corps modifié, réécrits à chaque frappe dans le client où vous allez la coller.

  • Un seul composant : l’exemple et le bouton ne peuvent pas diverger.
  • Ajoutez les vôtres avec `requestSamples`, ou retirez ceux que vos lecteurs n’utilisent pas.
Exemples de requête

Exemple de requête

curl '/demo/echo' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer demo-token' \
  -d '{
  "reference": "HB-1042",
  "mode": "sea"
}'

Lecteurs machine

Écrite aussi pour le modèle qui la lit

Le même contenu sous des formes lisibles par une machine : index dans llms.txt, versions par défaut dans llms-full.txt, chaque page en Markdown et route MCP pour lister, chercher et lire.

  • Les routes texte peuvent être prérendues ; MCP sert les mêmes collections à l’exécution.
  • Chaque page a un « copier en Markdown » et un lien qui l’ouvre dans un assistant.
  • La route MCP sert les mêmes collections que le site interroge : une source, deux lecteurs.
Lecteurs machine
http://localhost/llms.txt
Ouvrir

Fonctionnalités