Über 90 Übungen für die Koordinationsleiter (Agility Ladder), jede als nummeriertes Schrittdiagramm und als Animation mit Tempo und Klick, dazu Trainingspläne zum Abspielen und Drucken, eigene Übungen und ein Marktplatz. Diese Seite erklärt die Bedienung für Trainerinnen und Trainer, das Übungsformat für alle, die eigene Übungen bauen, und was wo gespeichert wird.
Jede Übung ist ein kleines Datenobjekt: welche Füße, in welcher Reihenfolge, in welches Feld der Leiter. Aus dieser Beschreibung erzeugt die App das Schrittdiagramm mit Nummern, die Animation, die Schritttexte („rechts rein“, „Sprung“) und die Klicks. Darum sieht jede Übung gleich aus, lässt sich spiegeln, in jedem Tempo abspielen, auf jede Leiterlänge umrechnen und ohne Grafikprogramm neu anlegen.
Katalog, Animationen, Pläne, Druck und eigene Übungen laufen komplett im Browser. Nichts wird übertragen.
Eigene Übungen und Pläne online sichern, auf dem Marktplatz veröffentlichen, in Gruppen teilen.
Knopf „EN/DE“ im Kopf schaltet alles um, auch Übungsnamen, Beschreibungen und Schritttexte.
Die Perspektive ist die Draufsicht wie in Trainer-Diagrammen: Leiter senkrecht, Start unten, Bewegung nach oben. Linker Fuß blau (L), rechter Fuß orange (R). Kopf, Arme und Ball erscheinen nur, wenn die Übung sie braucht.
Die Startseite zeigt den Katalog als Karten mit kleinem Diagramm, Name, Schwierigkeit und Kategorien. Drei Filter lassen sich kombinieren, dazu eine Suche:
Filter wirken zusammen als „und“: Sprünge + Basketball + mittel zeigt nur Übungen, die alle drei Bedingungen erfüllen. Die Zahl unter den Filtern nennt, wie viele übrig sind. Die Hilfe in der App (#/hilfe) zeigt zwei Matrizen, wie viele Übungen es je Sportart und Kategorie pro Stufe gibt.
Auf dem Handy: nach links oder rechts wischen wechselt die Kategorie; in der Übungsansicht wechselt es zur nächsten oder vorherigen Übung der zuletzt gesehenen Liste.
Eine Übung öffnen zeigt oben die Bühne, daneben die Schrittliste, darunter Beschreibung, Tipps und Varianten.
Die Einstellungen merken sich außerdem Standardansicht (Bild oder Animation), Schleife, Ton, Design (hell, dunkel, System) und Sprache. Wer „Bewegung reduzieren“ im Betriebssystem eingeschaltet hat, bekommt das Bild als Standard.
Ein Plan (#/plaene) ist eine geordnete Liste von Übungen mit je Führungsfuß, Tempo, Dauer und Pause bis zur nächsten Übung.
Die Plan-Seite bietet fertige Pläne aus dem Katalog: den ganzen Katalog, je Schwierigkeit, je Kategorie und Stufe, je Sportart. Vorlagen sind schreibgeschützt und lassen sich ansehen, starten, drucken oder „Als eigenen Plan kopieren“. Das Dropdown filtert nach Eigene, Schwierigkeit, Sportart, Kategorie.
Beide Seiten (Standard): die Übung wird je Seite ausgeführt, abwechselnd rechts zuerst und links zuerst; eingestellte Durchgänge oder Sekunden gelten pro Seite. Bei symmetrischen Übungen entfällt das, der Editor zeigt „symmetrisch“.
„Start“ öffnet den Abspieler: Animation im Tempo der Übung, Countdown der Durchgänge oder Sekunden, in der Pause das Diagramm der nächsten Übung, Signal bei 3-2-1 und beim Seitenwechsel (wenn Ton an ist). Das Display bleibt wach. Übungen lassen sich überspringen; läuft der Plan bis „Geschafft!“, wird das Training im Protokoll gezählt (Abschnitt Premium).
Pläne liegen im Browser und lassen sich als Link teilen; wer den Link öffnet, bekommt den Plan in seine eigene Liste.
Drei Druckansichten, immer hell und für A4 gesetzt. Die Ausgabe läuft über den Druckdialog des Browsers, dort steht „Als PDF speichern“ bereit, auch am Handy.
In der Druckleiste wechselt „Mit Erläuterungen“ (Diagramm, Beschreibung, Schrittfolge, Tipps) zu „Nur Grafik“ (Name und Diagramm, drei bis vier pro Zeile, gut für Aushänge). Seitenumbrüche laufen nie durch ein Diagramm.
„Neue Übung“ (Kategorie „Eigene“ oder #/neu) öffnet den Editor. Jede Katalog-Übung lässt sich außerdem mit „Bearbeiten (Kopie)“ als Vorlage in den Editor laden. Eigene Übungen erscheinen in der Kategorie „Eigene“, bekommen Vorschaubild, Animation, Ton und Druck wie alle anderen und lassen sich in Pläne aufnehmen.
Unter „JSON (für Fortgeschrittene)“ steht dieselbe Übung als Text, in beide Richtungen synchron; nur dort lassen sich Startpositionen, Winkel als Blickrichtung und eine feste Leiterlänge setzen. Die Vorschau aktualisiert sich live, Fehler werden unter dem Text genannt. Die vollständige Beschreibung aller Felder steht unten im Übungsformat.
Eigene Übungen liegen im Browser (localStorage). Wer sie dauerhaft sichern oder auf einem zweiten Gerät haben will, nutzt den Teilen-Link oder das Konto.
„Link teilen“ gibt es an jeder Übung, jedem Plan und im Editor. Die komplette Definition wird als Text in den Link geschrieben (Base64-URL-kodiert hinter #/teilen/… bzw. #/plan/teilen/…). Es wird nichts auf einem Server gespeichert; der Link lässt sich per Messenger oder Mail weitergeben.
Katalog-Übungen haben kurze, feste Adressen (#/u/<id>), Kategorien #/k/<id>, Sportarten #/s/<id>; die lassen sich wie jede Seite verlinken.
Alles bisher Beschriebene geht ohne Konto. Das Konto (#/konto) ergänzt drei Dinge:
Es gibt kein eigenes Passwort. Die Anmeldung läuft über einen Anbieter (derzeit Google; Facebook und netID sind vorbereitet). Gespeichert werden nur Anbieter-Kennung, Anzeigename, E-Mail und Bild-Adresse. Der Browser bekommt ein Sitzungs-Cookie, keine Zugangstoken. „Abmelden“ beendet die Sitzung, „Überall abmelden“ alle Sitzungen des Kontos.
Kein Aufruf ohne Handlung: Beim Start, in Übungen, Plänen und Einstellungen spricht die App nicht mit dem Server. Erst Login, Marktplatz öffnen, Suchen, Übernehmen, Speichern oder Veröffentlichen lösen Aufrufe aus.
Eine Übung ist ein JSON-Objekt. Der Editor und der Server prüfen dieselben Regeln; alles, was hier nicht steht, wird ignoriert. Beispiel Icky Shuffle:
{
"id": "icky-shuffle",
"name": "Icky Shuffle",
"aliases": ["Ickey Shuffle", "2 in 1 out"],
"categories": ["vorwaerts", "kombination"],
"sports": ["fussball", "football"],
"difficulty": 2,
"facing": "forward",
"feet": ["l", "r"],
"arms": false,
"ball": null,
"start": { "l": "-1L", "r": "-1L" },
"cycle": {
"fields": 2,
"beats": [
{ "r": "0C" },
{ "l": "0C" },
{ "r": "0.5R" },
{ "l": "1C" },
{ "r": "1C" },
{ "l": "1.5L" }
]
},
"description": "…",
"tips": ["…"],
"variations": ["…"]
}
Eine Position ist ein Text "<Feld><Seite>", z. B. "0C", "1L", "-1R", "0.5R", oder das Wort "up".
0 = erstes Feld des Zyklus, 1 = nächstes, -1 = Startzone vor der Leiter. Dezimalzahlen sind erlaubt (0.5 = auf Höhe der Sprosse zwischen Feld 0 und 1).C im Feld, L links neben der Leiter, R rechts daneben (Groß- oder Kleinschreibung egal)."up": Fuß angehoben, wird nicht gezeichnet (z. B. Kniehebelauf, Einbeinformen).cycle)cycle.beats ist die Liste der Zählzeiten eines Durchlaufs, cycle.fields (Zahl > 0) die Anzahl Felder, um die sich das Muster pro Durchlauf nach vorn verschiebt. Die App wiederholt die Zählzeiten, addiert jedes Mal fields auf alle Feldnummern und hört auf, sobald ein Fuß (oder der Ball am Fuß) über das letzte Feld hinaus müsste. Danach kommt automatisch ein Abschluss-Schritt „Ende“ in die Zone hinter der Leiter. Mehr als 400 Schritte sind ein Fehler („ist cycle.fields zu klein?“); passt kein einziger Schritt auf die Leiter, ebenfalls.
beats)| Schlüssel | Bedeutung |
|---|---|
l, r | Zielposition des linken bzw. rechten Fußes oder "up". Fehlt ein Fuß, bleibt er stehen. Füße, die nicht in feet stehen, werden ignoriert. |
lr | beide Füße gleichzeitig ans selbe Ziel (= Sprung); hat Vorrang vor l/r |
jump | true erzwingt die Sprung-Darstellung. Automatisch ein Sprung: zwei sichtbare Füße bewegen sich gleichzeitig, oder bei Einbein-Übungen jeder Schritt (Hüpfer). |
arms | nur bei "arms": true: "down" "side" "up" "front" "back" "bent" "clap" "clapup" "cross" für beide Arme oder { "l": "…", "r": "…" }; gilt bis zur nächsten Änderung |
ball | nur mit ball in der Übung. Hand-Ball: "l" "r" "both" "front" "back" "left" "right" "air" (in der Hand, am Körper, in der Luft). Fuß-Ball: eine Feldposition wie "1C" (am Boden, verschiebt sich mit dem Zyklus). |
bounce | true = der Ball wird in dieser Zählzeit geprellt (Animation und Bass-Ton) |
facing | Blickrichtung nur für diese Zählzeit: "forward" "backward" "left" "right" oder Winkel in Grad (0 = vorwärts, 90 = rechts, 180 = rückwärts, -90 = links) |
cue | Schritttext; fehlt er, wird er erzeugt („rechts rein“, „Sprung“, „Arme hoch“, „prellen“). Eigene Texte werden beim Spiegeln (links/rechts) und bei Englisch Wort für Wort übersetzt. |
hold | Dauer in Zählzeiten (Standard 1), z. B. 2 für einen gehaltenen Stand |
| Schlüssel | Bedeutung |
|---|---|
id | Pflicht, eindeutig, nur a-z 0-9 -; steht in der Adresse |
name, aliases | name Pflicht; aliases Liste weiterer Namen (durchsuchbar) |
categories | Pflicht, nicht leer, aus vorwaerts rueckwaerts seitwaerts spruenge einbeinig arme ball kombination |
sports | optional, aus fussball football basketball handball tennis kinder oder eine eigene Sportart eigene-… (höchstens 20) |
difficulty | Pflicht: 1, 2 oder 3 |
facing | Grund-Blickrichtung (Werte wie bei der Zählzeit; Standard "forward") |
feet | benutzte Füße: ["l","r"] (Standard), ["l"] oder ["r"]; nur diese werden gezeichnet |
sides | optional: "one" = eine gespiegelte zweite Seite ergibt keinen Sinn (Pläne spielen eine Seite), "both" = immer beide Seiten. Ohne Angabe erkennt die App selbst, ob die gespiegelte Übung identisch ist. |
arms | true zeichnet Kopf, Schultern und Arme |
ball | null oder { "kind": "hand" } / { "kind": "foot" } |
start | Ausgangsstellung: l, r (Standard "-1C"), arms (Standard "down"), ball (Hand: "both", Fuß: "-0.5C"), facing |
ladder | optionale Anzahl Felder. Standard: mindestens 6, aufgerundet auf ein Vielfaches von cycle.fields. Hat der Nutzer in den Einstellungen eine Leiterlänge gesetzt, gilt die überall und ladder wird ignoriert. |
description, tips, variations | Freitext bzw. Listen von Texten |
Grenzen auf dem Server: 24 KB je Übung, 256 KB je Plan, 200 Einträge je Konto und Art (Premium 2000).
Verbindlich ist die Datenschutzerklärung von d-solve.de, Abschnitt 10. Hier die technischen Fakten.
| Schlüssel | Inhalt |
|---|---|
kl-custom, kl-custom-sports | eigene Übungen, eigene Sportarten |
kl-plans, kl-plan-defaults | eigene Trainingspläne, Standardwerte für Pläne |
kl-settings, kl-theme, kl-lang, kl-print-mode | Einstellungen (Leiterlänge, Ton, Ansicht, Schleife), Design, Sprache, Druckmodus |
kl-log, kl-group-share | Trainingsprotokoll (Datum, Plan, Dauer, Übungs-IDs), Freigabe-Schalter je Gruppe |
kl-auth, kl-cloud-map | Anzeige-Profil des angemeldeten Kontos (Name, Bild, Anbieter); Zuordnung lokaler IDs zu Server-IDs |
kl-entitlements, kl-ads-consent | eingelöster Code (signiertes Token, ohne Konto), Zustimmung zu Anzeigen |
Nur für die Sitzung (sessionStorage, weg beim Schließen des Tabs): kl-context (zuletzt gesehene Liste fürs Wischen), kl-plan-filter, kl-markt-tab, kl-providers (verfügbare Login-Anbieter), kl-after-login, kl-editor-prefill, kl-feedback-from.
__Host-kl_session (HttpOnly, Secure, SameSite=Lax; 30 Tage gleitend, höchstens 90), Zeitpunkte. Während des Logins zusätzlich zehn Minuten das Cookie kl_login.Keine Cookies und keine Aufrufe an den Server ohne Anmeldung oder Marktplatz. Keine Analyse-Skripte. Anzeigen von Google laden erst nach ausdrücklicher Zustimmung und nur, wenn sie konfiguriert sind. Zahlungen laufen vollständig bei Stripe.
Die App ist statisch: ein Ordner mit HTML, CSS und JavaScript, ohne Build-Schritt und ohne externe Abhängigkeiten. Jeder Webspace reicht.
public/projects/koordinationsleiter/ aus dem Repository der Website kopieren und auf einen Webserver legen (auch GitHub Pages, Netlify, Cloudflare Pages).config.js alles abschalten, was keinen Server hat: apiBase: "" (kein Konto, kein Marktplatz), feedbackEndpoint: "", donateUrl: "". Über features lassen sich Bereiche wie Pläne, Druck, Sportarten oder Werbung einzeln ausblenden.exercises.js ergänzen, englische Texte unter derselben id in exercises.en.js.index.html auf den eigenen Betreiber ändern.Wer Konto und Marktplatz will, deployt zusätzlich den Cloudflare Worker aus workers/koordinationsleiter-api (D1-Datenbank, Social-Login, optional Stripe) auf einer Subdomain derselben Website und trägt dessen Adresse als apiBase ein. Die Einrichtung steht in der README des Projekts.
Lizenz, Quellen der Übungen und technische Details: README im Repository.