Doku-Pflege
Diese Seite erklärt wie diese Doku selbst gepflegt wird — Style-Guide, Welle-Pattern, Drift-Check, Templates. Für jeden, der die Doku weiterentwickelt.
Doku-Architektur
docs/
├── anwender/ # Persona-orientierte Tutorials (~80)
│ ├── techniker/
│ ├── innendienst/
│ ├── ...
│ └── admin/
├── cheat-sheets/ # 13 Persona-1-Seiter
├── grundlagen/ # 11 Querschnitt-Themen (FAQ, Glossar, KI-Chat)
├── konzepte/ # 21 Architektur-/Domänen-Konzepte
├── api/ # 7 Entwickler-API-Seiten
├── _template/ # Vorlagen für neue Seiten
└── <module-routes>/ # 177 Modul-Doku-Seiten (technische Referenz)
src/
├── pages/sitemap.mdx # Master-Index
├── pages/roadmap.mdx # Was ist da, was kommt
└── components/... # Custom-Komponenten
_internal/
├── HANDOVER.md # Status pro Session
├── workflow.md # Spielregeln
├── codebase-inventory.md # Architektur-Übersicht
└── drift-report-*.md # Drift-Audit pro Stand
Style-Guide
Sprache
- Deutsch im Body, Sie-Form
- Echte Umlaute (ä/ö/ü/ß), nicht ae/oe/ue/ss
- Keine Marketing-Sprache („revolutionär", „vollumfänglich")
- Keine Emojis
- Unicode-Pfeile/Bullets erlaubt
Tutorial-Stil (Anwender)
- Wann mache ich das? — Trigger-Situationen
<Voraussetzung>— Vorbereitung- So gehen Sie vor mit
<TutorialSchritt nummer={N} titel="...">Blöcken - Pro Schritt: Was Sie machen + Wie + Warum + ggf. Stolperstein
- Weg 2 — KI-Chat Section (wo sinnvoll)
- Was tue ich, wenn etwas schiefgeht? mit
<Stolperstein>-Boxen - Tipps aus der Praxis
- Verwandte Tutorials
<AdminDetails>klappbarer Block für technische Tiefe
Modul-Doku-Stil (technische Referenz)
- Pflicht-Sektionen in fester Reihenfolge — siehe
docs/_template/modul-seite.md - Felder-Tabelle Pflicht-Spalten: Feldname / Pflicht / Datentyp / Wirkung / Voraussetzung
- CASL mit Subjects + Keycloak-Rolle
Konzept-Stil
- Mermaid-Diagramme wo sinnvoll
- Pattern-Erklärung mit Code-Beispielen
- Edge-Cases explizit aufzählen
- Anti-Patterns als „was NICHT machen"
Welle-Pattern für neue Doku
Pro Welle:
- 4-9 Doku-Seiten, fokussiertes Thema (z.B. „Buchhaltung-SB-Cluster")
- Cross-Refs zu verwandten Tutorials in Voraussetzung + Verwandte
- Build muss grün sein
- Commit-Message: „Welle X:
<Thema>" + Co-Authored-By
Custom-Komponenten
In src/theme/MDXComponents.tsx registriert (ohne Import nutzbar):
| Komponente | Wofür |
|---|---|
<TutorialSchritt nummer={N} titel=""> | Schritt-Block mit Gradient-Nummer |
<Voraussetzung> | Vorbereitungs-Liste |
<Stolperstein titel?> | Warn-Callout für Edge Cases |
<KIHinweis titel?> | Info-Callout |
<AdminDetails titel?> | klappbarer Block |
<PersonaGrid spalten={2}> | Persona-Tile-Container |
<PersonaTile href titel rolle geraet aufgaben={[]}> | Persona-Karte |
<Screenshot status="todo" beschreibung=""> | Placeholder für Bilder |
<ModulStatus> | Status-Badge |
Frontmatter-Pflichtfelder
Pro Modul-Doku-Seite:
---
title: ... # H1 + Browser-Tab
sidebar_position: 1 # Reihenfolge
slug: /... # URL
description: ... # Meta-Description
status: live | draft # Status
endpoint: /... # FE-Route (für Drift-Check)
api_endpoints: [...] # BE-Routes
casl: [Subject:action] # Doku-Format Subject:action
casl_fe: [FE_Subject:view]
modul: ...
tags: [...]
letzte_aktualisierung: YYYY-MM-DD
verantwortlich: Team
---
Anwender-Tutorials brauchen endpoint/api_endpoints/casl nicht.
Drift-Check
npm run drift-check # Markdown-Bericht
npm run drift-check:json # für Skript-Verarbeitung
npm run drift-check:strict # exit 1 bei Drift (CI-Modus)
Drift-Skript prüft pro Modul-Doku:
- Existiert die Route im FE-Code?
- Stimmen die CASL-Subjects mit dem Code überein?
- Critical drift: Code hat Subjects, die in Doku fehlen
Bei Critical-Drift: node scripts/drift-fix.mjs (auto-ergänzt fehlende Subjects).
Native Screenshots
Pipeline für Anwender-Tutorial-Screenshots:
# 1. Chrome-MCP-Tab auf demo.speamcore.com offen
# 2. Helper-Skript (siehe /tmp/snap.sh):
# - Window auf 1280x900 setzen
# - Tab in Front bringen
# - macOS screencapture -R "100,230,1280,755"
# 3. PNG landet unter static/img/screenshots/anwender/<tutorial>/
Wichtig: TAB_INDEX prüfen (nicht immer 1), caffeinate -u -t 3 gegen Display-Sleep.
Pull-Request-Workflow
Aktuell direkter Commit auf main. Für externe Beiträge:
- Fork
- Feature-Branch
- Welle bauen (siehe Pattern oben)
- PR mit Welle-Message
- Doku-Team reviewt + merged
Externe Repos (read-only)
- FE:
Projektordner/Speamcore/speamcore.com - BE:
Projektordner/Speamcore/api.speamcore.com
Niemals committen / pushen / branchen in den FE/BE-Repos. Vor jeder Doku-Session beide auf master + git pull.
Was zu vermeiden ist
- ❌ Routen erfinden — Liste der nicht-existenten in
_internal/HANDOVER.md - ❌ Felder/Endpoints/CASL-Subjects erfinden —
<!-- TODO: mit Marc abstimmen --> - ❌ Branchwechsel oder Pushes in FE/BE-Repos
- ❌
npm installohne Grund — Dependencies eingefroren - ❌ Massen-Edits ohne Build-Check zwischen drin
- ❌ Screenshots selbst generieren (canvas) — nur native via Chrome MCP
Bei Unsicherheit
Frag Marc nach. Lieber nachfragen als undokumentierte Funktionen ausliefern.
Verwandte Doku (intern, nur im Repo)
Die folgenden Dateien liegen unter _internal/ im Doku-Repo und werden nicht auf der Public-Site gerendert. Direkt im Git-Repo nachschlagen:
_internal/workflow.md— Spielregeln (intern)_internal/codebase-inventory.md— Architektur (intern)_internal/HANDOVER.md— Stand pro Session (intern)