AI-Agent 0ebaa8b132
Image bauen und in die Registry schieben / build (push) Successful in 8s
UI-Fixes: Wizard konsistent, Tabs uebersetzt/responsive, Set-Zeilen, leere Sets
- Setup-Wizard: feste Mindesthoehe (#setup-gate), Navigation unten
  verankert -> Hoehe springt nicht mehr zwischen den Schritten
- Wizard Benutzer-Anlage: nach Erfolg Bestaetigung statt leerem Formular
  (kein erneutes Eingeben), 'Weiter' aktiv
- Tabs: Labels werden uebersetzt (t()-i18n), Topbar/Tabs horizontal
  scrollbar + kompakter auf Mobil -> 'Einstellungen' wird nicht mehr
  abgeschnitten
- Button-Min-Breite (.btn 96px, .btn-small 64px) fuer Sprach-Konsistenz
- Fortschrittssegmente: bei weissem Akzent auf hellem Theme schwarz
  (statt unsichtbar weiss)
- Set-Zeile: eine horizontale Reihe (nowrap) mit einheitlicher
  Eingabe-Mindestbreite/-hoehe; Grid-Spalten auf 460px angepasst
- Leere Saetze (ohne Gewicht UND Reps) werden nicht mehr persistiert und
  im Verlauf ausgeblendet (kein 'empty kg x empty reps'-Wand)
- Tests: 158 Checks gruen (39+18+43+32+26)
2026-10-02 19:16:52 +00:00

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):

python3 server.py 8080

Oder mit Docker:

docker compose up -d

Danach im Browser: http://<host>: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.

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.

Lizenz

AGPL-3.0. Siehe LICENSE.

S
Description
REKORD - selbstgehosteter Trainings-Tracker für Gym, Laufen und Radfahren. Leichtgewichtig, browserbasiert, ohne Vendor-Lock-in. Daten bleiben lokal, keine Telemetrie.
Readme AGPL-3.0
1.5 MiB
0 Stars 1 Watchers 0 Forks
Languages
JavaScript 47.2%
Python 40.7%
CSS 10.7%
Shell 0.6%
HTML 0.6%
Other 0.2%