Das Hub-Modul liefert die Inhalte für die Self-Documentation — Wiki-Pages, FAQs, Glossare, Knowledge-Bases. Es ist der Backbone hinter ayoune.com/de/docs/.... Routing: hub-api.ayoune.app.
Hauptentitäten
KnowledgeBases
Eine KB ist ein Buch — sie bündelt zusammengehörige WikiPages.
| Feld | Hinweis |
|---|---|
slug |
URL-Pfad-Segment, z.B. developer-portal |
title |
Display |
description |
1-2 Zeilen |
theme |
Farb-Schema (indigo, emerald, amber, ...) |
icon |
Material-Icon |
published |
bool |
order |
Sortierung in Hub-Sidebar |
Beispiel-KBs (siehe kbSeeder.ts INITIAL_KBS):
| Slug | Theme | Icon |
|---|---|---|
| cli | slate | terminal |
| developer-portal | indigo | code |
| admin-handbook | emerald | shield |
| self-hosting | amber | server |
| api-reference | teal | plug |
| release-notes | violet | calendar |
WikiPages
Einzelne Markdown-Seiten innerhalb einer KB.
| Feld | Hinweis |
|---|---|
kbslug |
KB-Zugehörigkeit (auch im Frontmatter erlaubt) |
slug |
unique pro KB |
parentSlug |
Hierarchie (optional) |
order |
Sort within Parent (10er-Schritten) |
title |
H1 |
locale |
de, en, ... |
contentFormat |
markdown / html |
body |
Roh-Inhalt |
bodyHtml |
Gerendert (von worker-content-modifications) |
tags |
string[] |
published |
bool |
FAQs
Q&A-Format. Enger als WikiPages — gedacht für Schnellinfos.
slug: how-do-i-reset-password
question: "Wie setze ich mein Passwort zurück?"
answer: "Auf der Login-Seite ..."
category: account
Glossaries
Glossar-Einträge, die im Wiki-Render automatisch verlinkt werden (siehe linkGlossaryTerms im Render-Worker).
| Feld | Hinweis |
|---|---|
term |
"AY Singleton" |
definition |
Markdown |
aliases |
["AY", "ay-instance"] |
Routen
GET /knowledgebases
GET /knowledgebases/:slug
GET /wikipages
GET /wikipages?kbslug=developer-portal
GET /wikipages/:id
POST /wikipages
PATCH /wikipages/:id
POST /wikipages/:id/actions/publish
POST /wikipages/:id/actions/translate
GET /faqs
GET /glossaries
Suche
Hub nutzt Atlas-Search (siehe Self-Hosting → Kubernetes). Index: hub_search über wikipages + faqs + glossaries.
GET /search?q=auth+jwt&kbslug=developer-portal
Antwort enthält Highlights, Score und Cross-Refs.
Render-Pipeline
Wenn eine WikiPage gespeichert wird, läuft worker-content-modifications:
- Markdown → HTML
- Sanitize (XSS-Schutz)
- Glossar-Linking
- Mermaid → SVG
- TOC-Generation
- Cross-Link-Auflösung (
wiki:<kb>/<slug>→ URL) - Hash-Check (Idempotenz)
bodyHtmlaktualisiert- Pub/Sub
wikipage.rendered→consumer-appinvalidiert Cache
CLI-Workflow
ay create wikipages "Mein Beitrag" \
--set kbslug=developer-portal \
--set slug=mein-beitrag \
--set body="# Hi" \
--set published=true
ay exec hub:seed --file ./tooling/cli/docs/pages/de/... # Bulk-Import
Der Seeder liest kbslug aus dem Frontmatter — sonst zweites Pfad-Segment, sofern in der Whitelist (developer-portal | admin-handbook | self-hosting | api-reference | release-notes).
Verbindungen
- CMS-Module — public-facing Pages (anders gerendert)
- Self-Hosting — Atlas-Search-Setup