123 lines
4.8 KiB
Markdown
123 lines
4.8 KiB
Markdown
# 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://<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](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
|
|
|
|
## Lizenz
|
|
|
|
AGPL-3.0. Siehe `LICENSE`. |