Zielgruppe: Admin / Entwickler / technische Übergabe.
Architektur: bewusst statisch (kein Backend), Inhalte per JSON, hostingfähig auf normalem Webspace.
Empfohlener Projekt-Root (Beispiel): /media/lernplattform_taekwondo/
/media/lernplattform_taekwondo/
├─ index.html (Start / Auswahl / Login)
├─ lernen.html (Lernmodus)
├─ pruefung.html (Prüfungsmodus inkl. Auswertung/Export)
├─ assets/
│ ├─ css/
│ ├─ js/
│ └─ img/
├─ tenants/
│ ├─ tenants.json (Tenant-Index)
│ └─ <tenant-id>/
│ ├─ tenant.json (Tenant-Konfiguration)
│ ├─ inhalte.json (Lerninhalte)
│ ├─ pruefungen.json (Prüfungsdefinitionen)
│ └─ branding.json (optional: Farben/Logo, falls getrennt)
└─ docs/
├─ index.html
├─ technisch.html
└─ trainer-verein.html
Hinweis: Je nach Stand können tenant-spezifische Dateien leicht variieren (z. B. Branding integriert in tenant.json).
Das Grundprinzip bleibt: Tenant-Daten liegen unter /tenants/<tenant-id>/.
/tenants/tenants.jsonDiese Datei enthält die Liste der verfügbaren Tenants. Jede App-Instanz lädt daraus die Auswahl.
[
{
"id": "tkd-demo",
"name": "Taekwondo Demo Verein",
"path": "tenants/tkd-demo/"
}
]
/tenants/<tenant-id>/tenant.jsonTenant-spezifische Konfiguration (Branding, Login, Feature-Schalter, Version etc.).
{
"id": "tkd-demo",
"name": "Taekwondo Demo Verein",
"version": "1.0",
"brand": {
"logo": "assets/img/logo.png",
"accent": "#7fb0ff"
},
"auth": {
"mode": "simple",
"password": "DEMO-1234"
}
}
Beispiele aus eurem Setup:
Tenant-Index:
https://www.vfl-jesteburg.de/media/lernplattform_taekwondo/tenants/tenants.json
Tenant-Config:
https://www.vfl-jesteburg.de/media/lernplattform_taekwondo/tenants/tkd-demo/tenant.json
Erwartung: Beide URLs liefern im Browser JSON (ohne Download-Fehler / 404).
inhalte.json (Lerninhalte)Enthält Inhalte wie Techniken, Theorie, Formen etc. Struktur kann je nach Tenant variieren, Prinzip: Kategorien + Items.
pruefungen.json (Prüfungsdefinitionen)Definiert Prüfungen (Kup/Dan), Blöcke/Kriterien, ggf. Gewichtungen. Wichtig ist Konsistenz, damit das UI korrekt rendern kann.
Export erfolgt typischerweise als JSON (und ggf. CSV). Inhaltlich umfasst das:
Auto-Save wurde bewusst nicht als permanenter Speichermechanismus eingesetzt, weil:
beforeunload ist möglich, aber kein Muss/tenants/tkd-demo/ → /tenants/<neu>/tenant.json anpassen (id, name, ggf. Passwort/Branding)inhalte.json und pruefungen.json anpassen/tenants/tenants.json neuen Eintrag hinzufügen/tenants/<neu>/tenant.json muss ladentkd-style.css?v=7 (Cache-Bust)tenant.json: Feld version pflegen (z. B. 1.2)docs/ aktualisierentenants.json wirklich? (Groß/Klein!)tenant.json wirklich unter /tenants/<id>/?/docs/../assets/... sein (eine Ebene hoch)tenant.json korrekt gesetzt ist
Dokumentation: Technisch • Stand 2026 • Plattform-Stil
Hinweis: Diese Seite beschreibt die Architekturprinzipien und das Zielbild.
Tenant-spezifische JSON-Felder können abweichen – das Grundschema bleibt.