# REKORD **Rekord & Record: dein Training, festgehalten.** Ein leichtgewichtiger, selbst gehosteter Trainings-Tracker fürs Gym, Laufen und Radfahren. Läuft in jedem modernen Browser, speichert auf deiner Platte und wertet deine Fitnessdaten nicht aus. Kein Abo, kein Konto bei einem Anbieter, keine Datenkraken. ## Warum REKORD? - **Kein Vendor Lock-in.** Alles läuft bei dir: Backend auf deinem Server, Zustand in einer portablen SQLite-Datei. Export jederzeit als JSON oder CSV, Import genauso. Zieh um oder hör auf - deine Daten gehören dir. - **Leichtgewichtig.** Python-Standardbibliothek + SQLite im Backend, ein HTML-, ein CSS-, ein JS-File im Frontend. Kein Framework, kein Build-Schritt, keine Node-Installation. Läuft auf einem Mini-PC, einem alten Laptop oder in einem Container. - **Browserbasiert.** Keine App, kein Store, keine Installation. Aufschlagen, loslegen - auf jedem Gerät mit Browser. - **Cross-Device Sync.** Der Zustand liegt serverseitig. Öffne die App am Handy, am Laptop oder am Desktop-Rechner - es ist derselbe Stand. Mehrere Benutzer mit eigenen Konten und getrennten Daten sind eingebaut. - **UX zuerst.** Sätze eintragen mit einer Box (Zahl + Einheit in einem Feld), Set-Kette durch Abhaken, "Alles zurücksetzen", Verlauf inline bearbeiten, Wochenübersicht, Statistik mit Differenz zur ersten Messung. Der Tracker reibt sich nicht in den Weg zwischen dich und die Übung. - **Dein Take aufs Aufzeichnen.** Die App zeichnet auf - Gewichte, Reps, Cardio-Felder - und zeigt die Entwicklung über die Zeit. Sie verkauft nichts, personalisiert nichts und schickt nichts nach Hause. - **Open Source.** AGPL-3.0. Nachvollziehbar, erweiterbar, auditierbar. ## Features im Überblick **Training erfassen** - Gym mit Push/Pull/Legs (frei konfigurierbar) plus Laufen und Radfahren - Eingabe als eine Box: Zahl links, Einheit fest rechts (kg, reps, km, min, min/km, bpm, m) - Set-Abhaken als "Set n [ ]": der ganze Button ist klickbar, das Set hakt eine Kette ab - ohne Lücken - Reset-Satz und "Alles zurücksetzen" laden das letzte abgeschlossene Training - Vorbefüllung beim Start (optional): "Letztes Training vorbefüllen" oder "Plan-Gewichte vorbefüllen" (startKg aus der Config, auch ohne Verlauf) - Übungen per Drag & Drop sortieren, Übungen aus anderen Tagen spontan hinzufügen - Fragezeichen pro Übung: Erklärung plus die passende Maschine **Sessions & Verlauf** - "Session starten" / "Session abschließen", mehrere Sessions am Tag - Keine Geister: erst abgeschlossene Sessions erscheinen im Verlauf - Verlauf als Liste oder Wochenübersicht, inline bearbeitbar (Datum, Zeiten, Abhak-Status, Werte) und löschbar - Statistik: bestes Gewicht je Trainingstag mit Balken, Differenz zur ersten Messung **Ansicht & Einstellungen** - Deutsch und Englisch (Server-Standard und pro Benutzer) - Farbthema: Dunkel, System (folgt dem Gerät), Hell - plus OLED-Dark-Schalter - Akzentfarbe aus zehn Farben (inklusive Weiß) - Gewichtseinheit kg oder lb, Start-Ansicht wählbar - Einstellungen serverseitig, gelten auf allen Geräten **Mehrbenutzer** - Eigene Konten mit Kennwort (gehasht), Daten strikt getrennt - Der erste Benutzer ist Administrator und verwaltet Konten und Kennwörter - Einmaliger Einrichtungs-Wizard beim ersten Start (Sprache, Modus, Darstellung) **Daten** - Export/Import als JSON und CSV (Backup, Umzug, Tabellen-Auswertung) - Workouts über eine kleine API abrufbar (`/api/workouts`) - Demo-Daten (`demo-data.json`) zum direkten Ausprobieren ## Schnellstart Python (nur Standardbibliothek, kein `pip install`): ```bash python3 server.py 8080 ``` Oder mit Docker: ```bash docker compose up -d ``` Danach im Browser: `http://:8080/` Beim ersten Start führt dich ein kurzer Wizard durch Sprache, Einzel- oder Mehrbenutzermodus und Darstellung - danach ist die App einsatzbereit. ## Den Übungsplan anpassen Alle Übungen, Sätze, Gewichte, Maschinen und Erklärungen stehen in `config.json` - ohne Code-Eingriff. Das komplette Schema steht in der [technischen Dokumentation](TECH.md). ## Automatischer Build (CI/CD) Ein Push auf `main` baut automatisch ein Docker-Image und legt es in der Gitea-Registry ab (`git.somantis.net/j4stmarkus/trainingsplan`). Dafür läuft ein Gitea-Actions-Runner auf dem Server; die Workflow-Datei liegt unter `.gitea/workflows/build-image.yml`. Die CasaOS-Installation (`docker-compose.casaos.yml`) bezieht die App aus diesem Registry-Image. Fürs lokale Entwickeln bleibt `docker-compose.yml` mit `build: .` bestehen. ## Daten & Privatsphäre - Alles liegt in `data/state.db` (SQLite) - backupbar, überlebt Neustart und Container-Rebuild - Datenverzeichnis frei wählbar (`TRAINING_STATE_DIR`) - Keine externen Dienste, keine Telemetrie, keine Analyse deiner Daten ## Roadmap Die geplante Weiterentwicklung (Übungskatalog in der App bearbeiten, herstellerunabhängige Info-Texte mit Bildern/Schritten, Plugin-System mit Ollama/Cloud-Coach, Wearable-Import, CLI-Harness) steht in [ROADMAP.md](ROADMAP.md). ## Lizenz AGPL-3.0. Siehe `LICENSE`.