From e91cd304798efea5f5f4e8c1d8a8e3e02d9f3aae Mon Sep 17 00:00:00 2001 From: AI Agent Date: Fri, 2 Oct 2026 02:29:17 +0000 Subject: [PATCH] Realistische Demo-Daten (12 Wochen, 49 Sessions) + Roadmap + README-Verweis - demo-data.json neu generiert: 12 Wochen Push/Pull/Legs mit Plateau- Phasen, Deload-Woche, ausgelassenen Trainingstagen, Reps-Streuung, nicht abgehakten Saetzen und Notizen; dazu 12 Laeufe und 5 Fahrten - ROADMAP.md: interne Roadmap in 4 Phasen (Inhalt in der App bearbeiten, herstellerunabhaengige Info-Texte mit Bildern/Schritten, Plugin-System mit Ollama/Cloud-Coach, Wearable-Import, CLI-Harness, Volumen/1RM, PWA, a11y) - README: Roadmap-Sektion - test_auth: erwartete Demo-Zaehler dynamisch aus der Datei berechnet - Tests: 158 Checks gruen (39+18+43+32+26) --- README.md | 7 + ROADMAP.md | 63 + demo-data.json | 5451 +++++++++++++++++++++++++++++++++----------- tests/test_auth.py | 22 +- 4 files changed, 4145 insertions(+), 1398 deletions(-) create mode 100644 ROADMAP.md diff --git a/README.md b/README.md index b8bcbb8..c856d54 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,13 @@ Fürs lokale Entwickeln bleibt `docker-compose.yml` mit `build: .` bestehen. - 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`. \ No newline at end of file diff --git a/ROADMAP.md b/ROADMAP.md new file mode 100644 index 0000000..83bc1da --- /dev/null +++ b/ROADMAP.md @@ -0,0 +1,63 @@ +# REKORD - Roadmap + +Interne Roadmap. Prioritaeten: P1 = naechste Iterationen, P2 = bald, P3 = +spaeter. Status: Idee / Geplant / In Arbeit / Fertig. + +Zielrichtung: breiteres Feature-Set, einfachere Erweiterung des +Uebungs-/Maschinen-Katalogs, herstellerunabhaengige Inhalte, sanfte +Integration (Plugins, lokale Modelle) statt Monolithen. Architektur-Leitplanken +bleiben: Config-getrieben, leichtgewichtig, Daten lokal, keine Telemetrie. + +--- + +## Phase 1 - Inhalte & Bedienbarkeit + +| Prioritaet | Thema | Status | Notiz | +|---|---|---|---| +| P1 | **Uebungen/Maschinen in der App bearbeiten** | Idee | Heute aendert man `config.json` von Hand. Ziel: Uebungen, Tage, Maschinen und Info-Texte direkt in der App anlegen/bearbeiten (persistiert neben der Config), damit ein Nicht-Programmierer den Plan ohne Dateieditor pflegt. | +| P1 | **Info-Texte erweitern** | Idee | Neben dem Freitext: optionale Bilder (URL oder Upload), Schritte als Checkliste, ein "wertvoller Link" (z.B. zu einer neutralen Anatomie-/Form-Quelle). Wichtig: **nicht hersteller-spezifisch** - die Technogym-Referenzen aus der Config sind nur Platzhalter; der Katalog soll generisch sein. | +| P1 | **Uebungsvarianten & Maschinen-Tags** | Idee | Eine Uebung mit mehreren Varianten (KH, Maschine, Kabel) und deren Verfuegbarkeit; beim Training schnell zwischen den Geräten wechseln, die im Studio stehen. | +| P1 | **Set-Vorlagen pro Uebung** | Idee | Im Plan definierte Satz-Vorlagen (Anzahl, Ziel-Reps, Pause) als Startpunkt - schon teilweise da ("Plan-Gewichte vorbefuellen"), aber noch nicht pro Satz steuerbar. | +| P2 | **Gewichtseinheiten pro Uebung** | Idee | z.B. Bodyweight (kein kg), Bandwiderstand, Maschinen-Gewicht inkl. Hebel - neben dem globalen kg/lb. | + +## Phase 2 - Integration & Automation + +| Prioritaet | Thema | Status | Notiz | +|---|---|---|---| +| P1 | **Plugin-System** | Idee | Kleine Plugins (JS im Browser und/oder Server-Skripte) mit klaren Hooks: nach Session-Speichern, beim Export, beim Anzeigen einer Uebung, beim Abschluss. Registrierung in der Config. So bleiben Erweiterungen ausserhalb des Kerns. | +| P1 | **Ollama/Cloud-Coach** | Idee | Plugin, das Form-Tipps/Zusammenfassungen per API generiert - **local-first** (Ollama), Cloud nur mit expliziter Zustimmung und eigener Wahl des Anbieters/Keys. Keine Daten gehen ohne Erlaubnis nach aussen. | +| P2 | **Webhooks bei Events** | Idee | Nach "Session abgeschlossen", "Benutzer angelegt" etc. - fuer eigene Automation (Backup, Benachrichtigungen, Hausautomation). | +| P2 | **API-Keys pro Benutzer** | Idee | Neben den Login-Tokens: eigene read/write Keys pro Benutzer fuer Scripts, ohne das Konto freizugeben. | +| P2 | **Effizienter Harness (CLI)** | Idee | Kleines Kommandozeilen-/Script-Interface (`rekord`-CLI oder Python-Client) gegen die API: Workouts eintragen/abrufen, Statistiken ziehen - fuer Cron-Jobs, TUI, Automation. | +| P3 | **Wearable-Import** | Idee | Garmin/Apple/Fitbit/Samsung-Health-Exporte (CSV/JSON) als Plugin importieren; Puls etc. an Cardio-Sessions anhaengen. Kein Live-Sync in Phase 1. | + +## Phase 3 - Analyse & UX + +| Prioritaet | Thema | Status | Notiz | +|---|---|---|---| +| P1 | **Volumen & 1RM-Schaetzung** | Idee | Trainingsvolumen (kg × Reps) je Uebung/Tag, 1RM-Schaetzung (z.B. Epley) als zusaetzliche Statistik-Kennzahl. | +| P2 | **Wochenvergleich & Trends** | Idee | Statistik ueber Wochen hinweg (nicht nur "Differenz zur ersten Messung"): gleitende Durchschnitte, PR-Markierungen, Verlaufs-Graph (ohne externe Chart-Lib, wenn moeglich). | +| P2 | **PWA / Offline** | Idee | Als installierbare App (Service Worker, App-Icon) - nicht kritisch, da serverseitig, aber schoener auf dem Handy. | +| P2 | **Sessions am selben Tag bessern** | Idee | Mehrere Sessions pro Tag sind drin; UX fuer "morgens laufen, abends Gym" vereinfachen (schneller Aktivitaets-/Tag-Wechsel). | + +## Phase 4 - Qualitaet & Betrieb + +| Prioritaet | Thema | Status | Notiz | +|---|---|---|---| +| P2 | **Barrierefreiheit (a11y)** | Idee | Tastatur-Navigation, Kontraste, Screenreader-Labels systematisch pruefen. | +| P2 | **Backup/Retention** | Idee | Automatische Export-Erinnerung oder in-App-Backup-Timer; Dokumentation fuer Rotation. | +| P3 | **Mehrsprachigkeit ausbauen** | Idee | i18n-Architektur ist da (de/en); weitere Sprachen als Community-Beitrag. | +| P3 | **Mehr-Server / Replikation** | Idee | Datenhaltung bleibt SQLite; falls noetig: Import/Export als Synchronisationsweg dokumentieren statt Live-Replikation. | + +--- + +## Konzepte in einem Satz + +- **Content in der App statt in der Datei** - der Uebungskatalog wird Teil des + Produkts, nicht des Repos. +- **Herstellerunabhaengig** - Maschinen-Referenzen sind Hinweise, keine + Abhaengigkeit; Links/Medien sind optional und austauschbar. +- **Plugins statt Kern-Zerfaserung** - alles, was nicht jeder braucht + (Coach, Sync, Import), wird Plugin. +- **Local-first** - lokale Modelle (Ollama) sind der Default, Cloud nur auf + ausdruecklichen Wunsch. \ No newline at end of file diff --git a/demo-data.json b/demo-data.json index a00ae36..3e35a94 100644 --- a/demo-data.json +++ b/demo-data.json @@ -1,6 +1,6 @@ { "format": "trainingsplan-export-v2", - "exported_at": "2026-10-01T00:00:00", + "exported_at": "2026-10-02T00:00:00", "config": { "profile": { "name": "", @@ -346,9 +346,9 @@ "id": 1, "activity": "gym", "day": "Push", - "date": "2026-08-26", + "date": "2026-07-06", "start_time": "18:00", - "end_time": "19:15", + "end_time": "20:05", "note": "", "fields": {}, "status": "done", @@ -356,91 +356,91 @@ { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 0, - "weight": "17.5", + "weight": "16.25", "reps": "9", "done": 1 }, { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 1, - "weight": "17.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 2, - "weight": "17.5", + "weight": "16.25", "reps": "8", "done": 1 }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "16.25", + "reps": "10", + "done": 1 + }, { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 3, - "weight": "17.5", + "weight": "16.25", "reps": "7", "done": 1 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 0, - "weight": "15", - "reps": "11", + "weight": "12.5", + "reps": "10", "done": 1 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 1, - "weight": "15", + "weight": "12.5", "reps": "11", - "done": 1 + "done": 0 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 2, - "weight": "15", + "weight": "12.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "20", "reps": "11", "done": 1 }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 0, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 1, - "weight": "20", - "reps": "13", - "done": 1 - }, { "exercise": "Push/Pectoral/Butterfly", "sort": 2, "weight": "20", - "reps": "13", + "reps": "12", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 0, - "weight": "7.5", + "weight": "6.25", "reps": "13", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 1, - "weight": "7.5", + "weight": "6.25", "reps": "13", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 2, - "weight": "7.5", + "weight": "6.25", "reps": "13", "done": 1 }, @@ -476,21 +476,21 @@ "exercise": "Push/Kabel-Trizeps-Pushdown", "sort": 1, "weight": "25", - "reps": "13", - "done": 1 + "reps": "11", + "done": 0 }, { "exercise": "Push/Kabel-Trizeps-Pushdown", "sort": 2, "weight": "25", - "reps": "13", + "reps": "12", "done": 1 }, { "exercise": "Push/Trizeps-Strecken (French Press Maschine)", "sort": 0, "weight": "15", - "reps": "13", + "reps": "11", "done": 1 }, { @@ -511,21 +511,21 @@ "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 0, "weight": "15", - "reps": "13", + "reps": "14", "done": 1 }, { "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 1, "weight": "15", - "reps": "13", + "reps": "14", "done": 1 }, { "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 2, "weight": "15", - "reps": "13", + "reps": "14", "done": 1 } ] @@ -534,10 +534,10 @@ "id": 2, "activity": "gym", "day": "Pull", - "date": "2026-08-27", - "start_time": "18:00", - "end_time": "19:15", - "note": "", + "date": "2026-07-08", + "start_time": "17:45", + "end_time": "18:50", + "note": "Zugkraft gut", "fields": {}, "status": "done", "entries": [ @@ -545,21 +545,21 @@ "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 0, "weight": "55", - "reps": "9", + "reps": "10", "done": 1 }, { "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 1, "weight": "55", - "reps": "9", + "reps": "8", "done": 1 }, { "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 2, "weight": "55", - "reps": "8", + "reps": "7", "done": 1 }, { @@ -572,29 +572,29 @@ { "exercise": "Pull/Rudern (Low Row)", "sort": 0, - "weight": "50", + "weight": "47.5", "reps": "10", "done": 1 }, { "exercise": "Pull/Rudern (Low Row)", "sort": 1, - "weight": "50", + "weight": "47.5", "reps": "10", "done": 1 }, { "exercise": "Pull/Rudern (Low Row)", "sort": 2, - "weight": "50", - "reps": "9", + "weight": "47.5", + "reps": "10", "done": 1 }, { "exercise": "Pull/Rudern (Low Row)", "sort": 3, - "weight": "50", - "reps": "8", + "weight": "47.5", + "reps": "11", "done": 1 }, { @@ -608,7 +608,7 @@ "exercise": "Pull/Face Pulls", "sort": 1, "weight": "20", - "reps": "13", + "reps": "14", "done": 1 }, { @@ -621,29 +621,29 @@ { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 0, - "weight": "15", + "weight": "13.75", "reps": "13", "done": 1 }, { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 1, - "weight": "15", - "reps": "13", + "weight": "13.75", + "reps": "11", "done": 1 }, { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 2, - "weight": "15", - "reps": "13", + "weight": "13.75", + "reps": "12", "done": 1 }, { "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 0, "weight": "20", - "reps": "13", + "reps": "11", "done": 1 }, { @@ -666,9 +666,9 @@ "id": 3, "activity": "gym", "day": "Legs", - "date": "2026-08-28", + "date": "2026-07-10", "start_time": "18:00", - "end_time": "19:15", + "end_time": "19:20", "note": "", "fields": {}, "status": "done", @@ -677,7 +677,7 @@ "exercise": "Legs/Beinpresse", "sort": 0, "weight": "120", - "reps": "9", + "reps": "10", "done": 1 }, { @@ -691,28 +691,28 @@ "exercise": "Legs/Beinpresse", "sort": 2, "weight": "120", - "reps": "8", - "done": 1 + "reps": "9", + "done": 0 }, { "exercise": "Legs/Beinpresse", "sort": 3, "weight": "120", - "reps": "7", + "reps": "10", "done": 1 }, { "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 0, "weight": "50", - "reps": "11", + "reps": "10", "done": 1 }, { "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 1, "weight": "50", - "reps": "11", + "reps": "9", "done": 1 }, { @@ -747,7 +747,7 @@ "exercise": "Legs/Wadenheben stehend", "sort": 0, "weight": "65", - "reps": "17", + "reps": "15", "done": 1 }, { @@ -761,28 +761,28 @@ "exercise": "Legs/Wadenheben stehend", "sort": 2, "weight": "65", - "reps": "17", + "reps": "16", "done": 1 }, { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 0, - "weight": "60", + "weight": "57.5", "reps": "11", "done": 1 }, { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 1, - "weight": "60", + "weight": "57.5", "reps": "11", "done": 1 }, { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 2, - "weight": "60", - "reps": "11", + "weight": "57.5", + "reps": "10", "done": 1 }, { @@ -803,646 +803,355 @@ }, { "id": 4, - "activity": "gym", - "day": "Push", - "date": "2026-09-02", - "start_time": "18:00", - "end_time": "19:15", - "note": "", - "fields": {}, + "activity": "run", + "day": "", + "date": "2026-07-06", + "start_time": "07:15", + "end_time": "08:00", + "note": "Tempo-Runde", + "fields": { + "distanceKm": "5.3", + "minutes": "36", + "pacePerKm": "6:42", + "heartRate": "156", + "elevation": "38" + }, "status": "done", - "entries": [ - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 0, - "weight": "17.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 1, - "weight": "17.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 2, - "weight": "17.5", - "reps": "8", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 3, - "weight": "17.5", - "reps": "7", - "done": 1 - }, - { - "exercise": "Push/Schrägbank KH (je Hand)", - "sort": 0, - "weight": "15", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schrägbank KH (je Hand)", - "sort": 1, - "weight": "15", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schrägbank KH (je Hand)", - "sort": 2, - "weight": "15", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 0, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 1, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 2, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 0, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 1, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 2, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 0, - "weight": "25", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 1, - "weight": "25", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 2, - "weight": "25", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 0, - "weight": "25", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 1, - "weight": "25", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 2, - "weight": "25", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 0, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 1, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 2, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 0, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 1, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 2, - "weight": "15", - "reps": "13", - "done": 1 - } - ] + "entries": [] }, { "id": 5, - "activity": "gym", - "day": "Pull", - "date": "2026-09-03", - "start_time": "18:00", - "end_time": "19:15", + "activity": "ride", + "day": "", + "date": "2026-07-12", + "start_time": "09:00", + "end_time": "10:00", "note": "", - "fields": {}, + "fields": { + "distanceKm": "21", + "minutes": "61", + "avgSpeed": "20.8", + "heartRate": "150", + "elevation": "115" + }, "status": "done", - "entries": [ - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 0, - "weight": "55", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 1, - "weight": "55", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 2, - "weight": "55", - "reps": "8", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 3, - "weight": "55", - "reps": "7", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 0, - "weight": "50", - "reps": "10", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 1, - "weight": "50", - "reps": "10", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 2, - "weight": "50", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 3, - "weight": "50", - "reps": "8", - "done": 1 - }, - { - "exercise": "Pull/Face Pulls", - "sort": 0, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Face Pulls", - "sort": 1, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Face Pulls", - "sort": 2, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", - "sort": 0, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", - "sort": 1, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", - "sort": 2, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", - "sort": 0, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", - "sort": 1, - "weight": "20", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", - "sort": 2, - "weight": "20", - "reps": "13", - "done": 1 - } - ] + "entries": [] }, { "id": 6, "activity": "gym", - "day": "Legs", - "date": "2026-09-04", - "start_time": "18:00", - "end_time": "19:15", + "day": "Push", + "date": "2026-07-13", + "start_time": "19:00", + "end_time": "19:10", "note": "", "fields": {}, "status": "done", "entries": [ { - "exercise": "Legs/Beinpresse", + "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 0, - "weight": "120", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 1, - "weight": "120", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 2, - "weight": "120", - "reps": "8", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 3, - "weight": "120", + "weight": "17.5", "reps": "7", "done": 1 }, { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 0, - "weight": "50", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", + "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 1, - "weight": "50", - "reps": "11", + "weight": "17.5", + "reps": "10", "done": 1 }, { - "exercise": "Legs/Beinbeuger (Leg Curl)", + "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 2, - "weight": "50", - "reps": "11", + "weight": "17.5", + "reps": "7", "done": 1 }, { - "exercise": "Legs/Beinstrecker (Leg Extension)", + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "17.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", "sort": 0, - "weight": "55", - "reps": "13", + "weight": "13.75", + "reps": "10", "done": 1 }, { - "exercise": "Legs/Beinstrecker (Leg Extension)", + "exercise": "Push/Schrägbank KH (je Hand)", "sort": 1, - "weight": "55", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 2, - "weight": "55", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 0, - "weight": "65", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 1, - "weight": "65", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 2, - "weight": "65", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 0, - "weight": "60", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 1, - "weight": "60", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 2, - "weight": "60", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", - "sort": 0, - "weight": "0", + "weight": "13.75", "reps": "12", "done": 1 }, { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "13.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", "sort": 1, - "weight": "0", + "weight": "20", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "7.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "7.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "7.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "22.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "22.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "22.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "15", "reps": "12", "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "15", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "15", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "13.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "13.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "13.75", + "reps": "14", + "done": 1 } ] }, { "id": 7, "activity": "gym", - "day": "Push", - "date": "2026-09-09", - "start_time": "18:00", - "end_time": "19:15", - "note": "", + "day": "Pull", + "date": "2026-07-15", + "start_time": "17:45", + "end_time": "19:10", + "note": "Ruecken verkrampft", "fields": {}, "status": "done", "entries": [ { - "exercise": "Push/Bankdrücken KH (je Hand)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 0, - "weight": "17.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 1, - "weight": "17.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 2, - "weight": "17.5", - "reps": "8", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 3, - "weight": "17.5", + "weight": "55", "reps": "7", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", "sort": 0, - "weight": "15", + "weight": "50", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "50", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "50", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "50", "reps": "11", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", "sort": 1, - "weight": "15", + "weight": "20", + "reps": "13", + "done": 0 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "20", "reps": "11", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "13.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "13.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 2, - "weight": "15", + "weight": "13.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "20", "reps": "11", - "done": 1 + "done": 0 }, { - "exercise": "Push/Pectoral/Butterfly", - "sort": 0, - "weight": "22.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", - "sort": 1, - "weight": "22.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Pectoral/Butterfly", + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 2, - "weight": "22.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 0, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 1, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", - "sort": 2, - "weight": "7.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 0, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 1, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 2, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 0, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 1, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 2, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 0, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 1, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 2, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 0, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 1, - "weight": "15", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 2, - "weight": "15", + "weight": "20", "reps": "13", "done": 1 } @@ -1451,457 +1160,287 @@ { "id": 8, "activity": "gym", - "day": "Pull", - "date": "2026-09-10", + "day": "Legs", + "date": "2026-07-17", "start_time": "18:00", - "end_time": "19:15", + "end_time": "18:50", "note": "", "fields": {}, "status": "done", "entries": [ { - "exercise": "Pull/Latzug / Klimmzug-Maschine", + "exercise": "Legs/Beinpresse", "sort": 0, - "weight": "57.5", + "weight": "120", "reps": "9", "done": 1 }, { - "exercise": "Pull/Latzug / Klimmzug-Maschine", + "exercise": "Legs/Beinpresse", "sort": 1, - "weight": "57.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 2, - "weight": "57.5", + "weight": "120", "reps": "8", "done": 1 }, { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 3, - "weight": "57.5", - "reps": "7", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 0, - "weight": "52.5", - "reps": "10", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 1, - "weight": "52.5", - "reps": "10", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", + "exercise": "Legs/Beinpresse", "sort": 2, - "weight": "52.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 3, - "weight": "52.5", + "weight": "120", "reps": "8", "done": 1 }, { - "exercise": "Pull/Face Pulls", + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "120", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 0, - "weight": "22.5", - "reps": "13", + "weight": "50", + "reps": "12", "done": 1 }, { - "exercise": "Pull/Face Pulls", + "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 1, - "weight": "22.5", - "reps": "13", + "weight": "50", + "reps": "12", "done": 1 }, { - "exercise": "Pull/Face Pulls", + "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 2, - "weight": "22.5", - "reps": "13", + "weight": "50", + "reps": "11", "done": 1 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 0, - "weight": "15", + "weight": "55", "reps": "13", "done": 1 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 1, - "weight": "15", - "reps": "13", + "weight": "55", + "reps": "11", "done": 1 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 2, - "weight": "15", - "reps": "13", + "weight": "55", + "reps": "12", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 0, - "weight": "22.5", - "reps": "13", + "weight": "65", + "reps": "16", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 1, - "weight": "22.5", - "reps": "13", + "weight": "65", + "reps": "17", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 2, - "weight": "22.5", - "reps": "13", + "weight": "65", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "57.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "57.5", + "reps": "9", + "done": 0 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "57.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "0", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "0", + "reps": "10", "done": 1 } ] }, { "id": 9, - "activity": "gym", - "day": "Legs", - "date": "2026-09-11", - "start_time": "18:00", - "end_time": "19:15", - "note": "", - "fields": {}, + "activity": "run", + "day": "", + "date": "2026-07-13", + "start_time": "07:00", + "end_time": "08:00", + "note": "Tempo-Runde", + "fields": { + "distanceKm": "6.7", + "minutes": "44", + "pacePerKm": "6:36", + "heartRate": "144", + "elevation": "12" + }, "status": "done", - "entries": [ - { - "exercise": "Legs/Beinpresse", - "sort": 0, - "weight": "122.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 1, - "weight": "122.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 2, - "weight": "122.5", - "reps": "8", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 3, - "weight": "122.5", - "reps": "7", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 0, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 1, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 2, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 0, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 1, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 2, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 0, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 1, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 2, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 0, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 1, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 2, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", - "sort": 0, - "weight": "0", - "reps": "12", - "done": 1 - }, - { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", - "sort": 1, - "weight": "0", - "reps": "12", - "done": 1 - } - ] + "entries": [] }, { "id": 10, "activity": "gym", - "day": "Push", - "date": "2026-09-16", - "start_time": "18:00", - "end_time": "19:15", + "day": "Pull", + "date": "2026-07-22", + "start_time": "18:15", + "end_time": "18:50", "note": "", "fields": {}, "status": "done", "entries": [ { - "exercise": "Push/Bankdrücken KH (je Hand)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 0, - "weight": "20", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 1, - "weight": "20", - "reps": "9", - "done": 1 - }, - { - "exercise": "Push/Bankdrücken KH (je Hand)", - "sort": 2, - "weight": "20", + "weight": "57.5", "reps": "8", "done": 1 }, { - "exercise": "Push/Bankdrücken KH (je Hand)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "57.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "57.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 3, - "weight": "20", - "reps": "7", + "weight": "57.5", + "reps": "9", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Rudern (Low Row)", "sort": 0, - "weight": "17.5", - "reps": "11", + "weight": "52.5", + "reps": "9", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Rudern (Low Row)", "sort": 1, - "weight": "17.5", - "reps": "11", + "weight": "52.5", + "reps": "9", "done": 1 }, { - "exercise": "Push/Schrägbank KH (je Hand)", + "exercise": "Pull/Rudern (Low Row)", "sort": 2, - "weight": "17.5", - "reps": "11", + "weight": "52.5", + "reps": "8", "done": 1 }, { - "exercise": "Push/Pectoral/Butterfly", + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "52.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", "sort": 0, "weight": "22.5", - "reps": "13", + "reps": "14", "done": 1 }, { - "exercise": "Push/Pectoral/Butterfly", + "exercise": "Pull/Face Pulls", "sort": 1, "weight": "22.5", "reps": "13", "done": 1 }, { - "exercise": "Push/Pectoral/Butterfly", + "exercise": "Pull/Face Pulls", "sort": 2, "weight": "22.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "15", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "15", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "15", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "22.5", "reps": "13", "done": 1 }, { - "exercise": "Push/Seitheben (je Hand)", - "sort": 0, - "weight": "10", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Seitheben (je Hand)", + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 1, - "weight": "10", + "weight": "22.5", "reps": "13", "done": 1 }, { - "exercise": "Push/Seitheben (je Hand)", + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 2, - "weight": "10", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 0, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 1, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Schulterpresse Maschine", - "sort": 2, - "weight": "27.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 0, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 1, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Trizeps-Pushdown", - "sort": 2, - "weight": "27.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 0, - "weight": "17.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 1, - "weight": "17.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Trizeps-Strecken (French Press Maschine)", - "sort": 2, - "weight": "17.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 0, - "weight": "17.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 1, - "weight": "17.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Push/Kabel-Curls (Bizeps)", - "sort": 2, - "weight": "17.5", + "weight": "22.5", "reps": "13", "done": 1 } @@ -1910,281 +1449,167 @@ { "id": 11, "activity": "gym", - "day": "Pull", - "date": "2026-09-17", - "start_time": "18:00", - "end_time": "19:15", + "day": "Legs", + "date": "2026-07-24", + "start_time": "18:15", + "end_time": "19:20", "note": "", "fields": {}, "status": "done", "entries": [ { - "exercise": "Pull/Latzug / Klimmzug-Maschine", + "exercise": "Legs/Beinpresse", "sort": 0, - "weight": "57.5", + "weight": "122.5", "reps": "9", "done": 1 }, { - "exercise": "Pull/Latzug / Klimmzug-Maschine", + "exercise": "Legs/Beinpresse", "sort": 1, - "weight": "57.5", + "weight": "122.5", + "reps": "9", + "done": 0 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "122.5", "reps": "9", "done": 1 }, { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 2, - "weight": "57.5", - "reps": "8", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", + "exercise": "Legs/Beinpresse", "sort": 3, - "weight": "57.5", - "reps": "7", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 0, - "weight": "52.5", + "weight": "122.5", "reps": "10", "done": 1 }, { - "exercise": "Pull/Rudern (Low Row)", - "sort": 1, - "weight": "52.5", - "reps": "10", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 2, + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, "weight": "52.5", "reps": "9", "done": 1 }, { - "exercise": "Pull/Rudern (Low Row)", - "sort": 3, + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, "weight": "52.5", - "reps": "8", + "reps": "11", "done": 1 }, { - "exercise": "Pull/Face Pulls", - "sort": 0, - "weight": "22.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Face Pulls", - "sort": 1, - "weight": "22.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Pull/Face Pulls", + "exercise": "Legs/Beinbeuger (Leg Curl)", "sort": 2, - "weight": "22.5", - "reps": "13", - "done": 1 + "weight": "52.5", + "reps": "9", + "done": 0 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 0, - "weight": "17.5", + "weight": "57.5", "reps": "13", "done": 1 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 1, - "weight": "17.5", - "reps": "13", + "weight": "57.5", + "reps": "14", "done": 1 }, { - "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 2, - "weight": "17.5", - "reps": "13", + "weight": "57.5", + "reps": "12", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 0, - "weight": "22.5", - "reps": "13", + "weight": "67.5", + "reps": "17", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 1, - "weight": "22.5", - "reps": "13", + "weight": "67.5", + "reps": "18", "done": 1 }, { - "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "exercise": "Legs/Wadenheben stehend", "sort": 2, - "weight": "22.5", - "reps": "13", + "weight": "67.5", + "reps": "18", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "62.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "1.25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "1.25", + "reps": "12", "done": 1 } ] }, { "id": 12, - "activity": "gym", - "day": "Legs", - "date": "2026-09-18", - "start_time": "18:00", - "end_time": "19:15", - "note": "", - "fields": {}, + "activity": "run", + "day": "", + "date": "2026-07-20", + "start_time": "18:30", + "end_time": "08:00", + "note": "Lockerer Lauf", + "fields": { + "distanceKm": "4.7", + "minutes": "32", + "pacePerKm": "6:51", + "heartRate": "154", + "elevation": "38" + }, "status": "done", - "entries": [ - { - "exercise": "Legs/Beinpresse", - "sort": 0, - "weight": "122.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 1, - "weight": "122.5", - "reps": "9", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 2, - "weight": "122.5", - "reps": "8", - "done": 1 - }, - { - "exercise": "Legs/Beinpresse", - "sort": 3, - "weight": "122.5", - "reps": "7", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 0, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 1, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinbeuger (Leg Curl)", - "sort": 2, - "weight": "52.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 0, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 1, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Beinstrecker (Leg Extension)", - "sort": 2, - "weight": "57.5", - "reps": "13", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 0, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 1, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Wadenheben stehend", - "sort": 2, - "weight": "67.5", - "reps": "17", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 0, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 1, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/Glute Press / Hip Thrust", - "sort": 2, - "weight": "62.5", - "reps": "11", - "done": 1 - }, - { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", - "sort": 0, - "weight": "2.5", - "reps": "12", - "done": 1 - }, - { - "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", - "sort": 1, - "weight": "2.5", - "reps": "12", - "done": 1 - } - ] + "entries": [] }, { "id": 13, "activity": "gym", "day": "Push", - "date": "2026-09-23", - "start_time": "18:00", - "end_time": "19:15", + "date": "2026-07-27", + "start_time": "18:15", + "end_time": "18:50", "note": "", "fields": {}, "status": "done", @@ -2192,176 +1617,176 @@ { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 0, - "weight": "20", - "reps": "9", + "weight": "18.75", + "reps": "10", "done": 1 }, { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 1, - "weight": "20", - "reps": "9", + "weight": "18.75", + "reps": "7", "done": 1 }, { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 2, - "weight": "20", - "reps": "8", + "weight": "18.75", + "reps": "10", "done": 1 }, { "exercise": "Push/Bankdrücken KH (je Hand)", "sort": 3, - "weight": "20", + "weight": "18.75", "reps": "7", "done": 1 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 0, - "weight": "17.5", + "weight": "15", "reps": "11", "done": 1 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 1, - "weight": "17.5", - "reps": "11", + "weight": "15", + "reps": "10", "done": 1 }, { "exercise": "Push/Schrägbank KH (je Hand)", "sort": 2, - "weight": "17.5", - "reps": "11", + "weight": "15", + "reps": "9", "done": 1 }, { "exercise": "Push/Pectoral/Butterfly", "sort": 0, - "weight": "25", - "reps": "13", + "weight": "22.5", + "reps": "11", "done": 1 }, { "exercise": "Push/Pectoral/Butterfly", "sort": 1, - "weight": "25", - "reps": "13", + "weight": "22.5", + "reps": "14", "done": 1 }, { "exercise": "Push/Pectoral/Butterfly", "sort": 2, - "weight": "25", - "reps": "13", + "weight": "22.5", + "reps": "14", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 0, - "weight": "10", - "reps": "13", + "weight": "8.75", + "reps": "14", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 1, - "weight": "10", - "reps": "13", + "weight": "8.75", + "reps": "11", "done": 1 }, { "exercise": "Push/Seitheben (je Hand)", "sort": 2, - "weight": "10", - "reps": "13", + "weight": "8.75", + "reps": "12", "done": 1 }, { "exercise": "Push/Schulterpresse Maschine", "sort": 0, - "weight": "30", - "reps": "11", + "weight": "27.5", + "reps": "9", "done": 1 }, { "exercise": "Push/Schulterpresse Maschine", "sort": 1, - "weight": "30", - "reps": "11", + "weight": "27.5", + "reps": "9", "done": 1 }, { "exercise": "Push/Schulterpresse Maschine", "sort": 2, - "weight": "30", + "weight": "27.5", "reps": "11", "done": 1 }, { "exercise": "Push/Kabel-Trizeps-Pushdown", "sort": 0, - "weight": "30", + "weight": "27.5", "reps": "13", "done": 1 }, { "exercise": "Push/Kabel-Trizeps-Pushdown", "sort": 1, - "weight": "30", - "reps": "13", + "weight": "27.5", + "reps": "14", "done": 1 }, { "exercise": "Push/Kabel-Trizeps-Pushdown", "sort": 2, - "weight": "30", + "weight": "27.5", "reps": "13", "done": 1 }, { "exercise": "Push/Trizeps-Strecken (French Press Maschine)", "sort": 0, - "weight": "17.5", - "reps": "13", + "weight": "16.25", + "reps": "14", "done": 1 }, { "exercise": "Push/Trizeps-Strecken (French Press Maschine)", "sort": 1, - "weight": "17.5", + "weight": "16.25", "reps": "13", "done": 1 }, { "exercise": "Push/Trizeps-Strecken (French Press Maschine)", "sort": 2, - "weight": "17.5", - "reps": "13", + "weight": "16.25", + "reps": "12", "done": 1 }, { "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 0, - "weight": "17.5", + "weight": "16.25", "reps": "13", "done": 1 }, { "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 1, - "weight": "17.5", + "weight": "16.25", "reps": "13", "done": 1 }, { "exercise": "Push/Kabel-Curls (Bizeps)", "sort": 2, - "weight": "17.5", - "reps": "13", + "weight": "16.25", + "reps": "14", "done": 1 } ] @@ -2370,129 +1795,129 @@ "id": 14, "activity": "gym", "day": "Pull", - "date": "2026-09-24", - "start_time": "18:00", - "end_time": "19:15", - "note": "", + "date": "2026-07-29", + "start_time": "17:45", + "end_time": "20:05", + "note": "Ruecken verkrampft", "fields": {}, "status": "done", "entries": [ { "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 0, - "weight": "60", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 1, - "weight": "60", - "reps": "9", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 2, - "weight": "60", - "reps": "8", - "done": 1 - }, - { - "exercise": "Pull/Latzug / Klimmzug-Maschine", - "sort": 3, - "weight": "60", - "reps": "7", - "done": 1 - }, - { - "exercise": "Pull/Rudern (Low Row)", - "sort": 0, "weight": "55", - "reps": "10", + "reps": "9", "done": 1 }, { - "exercise": "Pull/Rudern (Low Row)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 1, "weight": "55", "reps": "10", "done": 1 }, { - "exercise": "Pull/Rudern (Low Row)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 2, "weight": "55", "reps": "9", "done": 1 }, { - "exercise": "Pull/Rudern (Low Row)", + "exercise": "Pull/Latzug / Klimmzug-Maschine", "sort": 3, "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "52.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "52.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "52.5", "reps": "8", "done": 1 }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "52.5", + "reps": "10", + "done": 0 + }, { "exercise": "Pull/Face Pulls", "sort": 0, - "weight": "25", + "weight": "22.5", "reps": "13", "done": 1 }, { "exercise": "Pull/Face Pulls", "sort": 1, - "weight": "25", + "weight": "22.5", "reps": "13", "done": 1 }, { "exercise": "Pull/Face Pulls", "sort": 2, - "weight": "25", - "reps": "13", + "weight": "22.5", + "reps": "14", "done": 1 }, { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 0, - "weight": "17.5", - "reps": "13", + "weight": "15", + "reps": "12", "done": 1 }, { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 1, - "weight": "17.5", + "weight": "15", "reps": "13", - "done": 1 + "done": 0 }, { "exercise": "Pull/Kabel-Curls hoch (Bizeps)", "sort": 2, - "weight": "17.5", + "weight": "15", "reps": "13", "done": 1 }, { "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 0, - "weight": "25", + "weight": "22.5", "reps": "13", "done": 1 }, { "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 1, - "weight": "25", + "weight": "22.5", "reps": "13", "done": 1 }, { "exercise": "Pull/Reverse Fly (Rückwärtsheben)", "sort": 2, - "weight": "25", + "weight": "22.5", "reps": "13", "done": 1 } @@ -2502,9 +1927,9 @@ "id": 15, "activity": "gym", "day": "Legs", - "date": "2026-09-25", + "date": "2026-07-31", "start_time": "18:00", - "end_time": "19:15", + "end_time": "18:50", "note": "", "fields": {}, "status": "done", @@ -2512,28 +1937,505 @@ { "exercise": "Legs/Beinpresse", "sort": 0, - "weight": "125", - "reps": "9", + "weight": "122.5", + "reps": "8", "done": 1 }, { "exercise": "Legs/Beinpresse", "sort": 1, - "weight": "125", + "weight": "122.5", "reps": "9", "done": 1 }, { "exercise": "Legs/Beinpresse", "sort": 2, - "weight": "125", - "reps": "8", + "weight": "122.5", + "reps": "9", "done": 1 }, { "exercise": "Legs/Beinpresse", "sort": 3, - "weight": "125", + "weight": "122.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "52.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "52.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "52.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "57.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "57.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "57.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "67.5", + "reps": "15", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "67.5", + "reps": "16", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "67.5", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "62.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "62.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "62.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "1.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "1.25", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 16, + "activity": "run", + "day": "", + "date": "2026-07-27", + "start_time": "18:30", + "end_time": "08:00", + "note": "Regen", + "fields": { + "distanceKm": "6.2", + "minutes": "39", + "pacePerKm": "6:16", + "heartRate": "165", + "elevation": "17" + }, + "status": "done", + "entries": [] + }, + { + "id": 17, + "activity": "gym", + "day": "Push", + "date": "2026-08-03", + "start_time": "19:00", + "end_time": "19:20", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "18.75", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "18.75", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "18.75", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "18.75", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "13.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "13.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "13.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "22.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "22.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "22.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "8.75", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "8.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "8.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "27.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "27.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "27.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "27.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "27.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "27.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "15", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "15", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "15", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "16.25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "16.25", + "reps": "12", + "done": 1 + } + ] + }, + { + "id": 18, + "activity": "gym", + "day": "Pull", + "date": "2026-08-05", + "start_time": "17:45", + "end_time": "20:05", + "note": "Zugkraft gut", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "60", + "reps": "7", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "55", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "55", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "55", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "16.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "16.25", + "reps": "11", + "done": 0 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "25", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 19, + "activity": "gym", + "day": "Legs", + "date": "2026-08-07", + "start_time": "18:00", + "end_time": "20:05", + "note": "Beine schwer, trotzdem durch", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "122.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "122.5", + "reps": "8", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "122.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "122.5", "reps": "7", "done": 1 }, @@ -2572,6 +2474,839 @@ "reps": "13", "done": 1 }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "70", + "reps": "16", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "70", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "70", + "reps": "16", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "62.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "2.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "2.5", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 20, + "activity": "run", + "day": "", + "date": "2026-08-03", + "start_time": "07:00", + "end_time": "08:00", + "note": "Lockerer Lauf", + "fields": { + "distanceKm": "4.4", + "minutes": "27", + "pacePerKm": "6:10", + "heartRate": "166", + "elevation": "19" + }, + "status": "done", + "entries": [] + }, + { + "id": 21, + "activity": "ride", + "day": "", + "date": "2026-08-09", + "start_time": "09:00", + "end_time": "10:00", + "note": "Mit Gegenwind", + "fields": { + "distanceKm": "19", + "minutes": "47", + "avgSpeed": "24.5", + "heartRate": "155", + "elevation": "117" + }, + "status": "done", + "entries": [] + }, + { + "id": 22, + "activity": "gym", + "day": "Push", + "date": "2026-08-10", + "start_time": "18:15", + "end_time": "19:10", + "note": "Brust fiel schwer", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "20", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "20", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "20", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "20", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "16.25", + "reps": "11", + "done": 0 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "16.25", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "10", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "10", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "10", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "30", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "17.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "17.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "17.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "17.5", + "reps": "14", + "done": 1 + } + ] + }, + { + "id": 23, + "activity": "gym", + "day": "Pull", + "date": "2026-08-12", + "start_time": "19:00", + "end_time": "19:10", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "60", + "reps": "7", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "55", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "55", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "55", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "16.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "16.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "25", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 24, + "activity": "run", + "day": "", + "date": "2026-08-10", + "start_time": "07:15", + "end_time": "08:00", + "note": "Regen", + "fields": { + "distanceKm": "5.4", + "minutes": "35", + "pacePerKm": "6:29", + "heartRate": "164", + "elevation": "44" + }, + "status": "done", + "entries": [] + }, + { + "id": 25, + "activity": "gym", + "day": "Push", + "date": "2026-08-17", + "start_time": "18:00", + "end_time": "19:10", + "note": "Brust fiel schwer", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "20", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "20", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "20", + "reps": "9", + "done": 0 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "20", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "16.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "16.25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "10", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "10", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "10", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "30", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "30", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "30", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "17.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "17.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "16.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "16.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "16.25", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 26, + "activity": "gym", + "day": "Pull", + "date": "2026-08-19", + "start_time": "18:15", + "end_time": "19:10", + "note": "Ruecken verkrampft", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "60", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "57.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "57.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "57.5", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "57.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "27.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "27.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "27.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "17.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "17.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "17.5", + "reps": "14", + "done": 0 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "27.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "27.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "27.5", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 27, + "activity": "gym", + "day": "Legs", + "date": "2026-08-21", + "start_time": "18:15", + "end_time": "20:05", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "125", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "125", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "125", + "reps": "8", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "125", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "55", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "55", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "55", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "60", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "60", + "reps": "13", + "done": 1 + }, { "exercise": "Legs/Beinstrecker (Leg Extension)", "sort": 2, @@ -2603,21 +3338,21 @@ { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 0, - "weight": "65", - "reps": "11", + "weight": "62.5", + "reps": "10", "done": 1 }, { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 1, - "weight": "65", - "reps": "11", + "weight": "62.5", + "reps": "12", "done": 1 }, { "exercise": "Legs/Glute Press / Hip Thrust", "sort": 2, - "weight": "65", + "weight": "62.5", "reps": "11", "done": 1 }, @@ -2626,47 +3361,1558 @@ "sort": 0, "weight": "2.5", "reps": "12", - "done": 1 + "done": 0 }, { "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", "sort": 1, "weight": "2.5", + "reps": "10", + "done": 1 + } + ] + }, + { + "id": 28, + "activity": "run", + "day": "", + "date": "2026-08-17", + "start_time": "07:00", + "end_time": "08:00", + "note": "", + "fields": { + "distanceKm": "6.6", + "minutes": "46", + "pacePerKm": "7:02", + "heartRate": "155", + "elevation": "11" + }, + "status": "done", + "entries": [] + }, + { + "id": 29, + "activity": "gym", + "day": "Pull", + "date": "2026-08-26", + "start_time": "19:00", + "end_time": "20:05", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "55", + "reps": "7", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "50", + "reps": "9", + "done": 0 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "50", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "50", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "15", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "15", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "25", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 30, + "activity": "gym", + "day": "Legs", + "date": "2026-08-28", + "start_time": "17:45", + "end_time": "18:50", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "112.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "112.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "112.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "50", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "50", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "55", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "55", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "65", + "reps": "15", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "65", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "2.5", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 31, + "activity": "run", + "day": "", + "date": "2026-08-24", + "start_time": "07:00", + "end_time": "08:00", + "note": "Regen", + "fields": { + "distanceKm": "4.4", + "minutes": "28", + "pacePerKm": "6:20", + "heartRate": "150", + "elevation": "11" + }, + "status": "done", + "entries": [] + }, + { + "id": 32, + "activity": "ride", + "day": "", + "date": "2026-08-30", + "start_time": "09:00", + "end_time": "10:00", + "note": "Ausfahrt", + "fields": { + "distanceKm": "15", + "minutes": "43", + "avgSpeed": "21.1", + "heartRate": "148", + "elevation": "59" + }, + "status": "done", + "entries": [] + }, + { + "id": 33, + "activity": "gym", + "day": "Push", + "date": "2026-08-31", + "start_time": "18:15", + "end_time": "18:50", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "21.25", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "21.25", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "21.25", + "reps": "8", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "21.25", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "17.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "11.25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "11.25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "11.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "32.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "32.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "32.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "32.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "32.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "32.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "18.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "18.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "18.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "18.75", "reps": "12", "done": 1 } ] }, { - "id": 16, + "id": 34, + "activity": "gym", + "day": "Pull", + "date": "2026-09-02", + "start_time": "18:00", + "end_time": "20:05", + "note": "Zugkraft gut", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "65", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "65", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "65", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "65", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "60", + "reps": "8", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "30", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "18.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "18.75", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "30", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "30", + "reps": "14", + "done": 0 + } + ] + }, + { + "id": 35, + "activity": "gym", + "day": "Legs", + "date": "2026-09-04", + "start_time": "17:45", + "end_time": "20:05", + "note": "Beine schwer, trotzdem durch", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "127.5", + "reps": "8", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "127.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "127.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "127.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "55", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "55", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "55", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "62.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "72.5", + "reps": "16", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "72.5", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "72.5", + "reps": "16", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "65", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "65", + "reps": "9", + "done": 0 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "65", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "3.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "3.75", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 36, "activity": "run", "day": "", - "date": "2026-08-27", + "date": "2026-08-31", "start_time": "07:15", - "end_time": "07:55", - "note": "Laufrunde", + "end_time": "08:00", + "note": "Regen", "fields": { - "distanceKm": "4.5", + "distanceKm": "4.1", "minutes": "29", - "pacePerKm": "6:24", - "heartRate": "150", - "elevation": "18" + "pacePerKm": "7:00", + "heartRate": "153", + "elevation": "46" }, "status": "done", "entries": [] }, { - "id": 17, + "id": 37, + "activity": "gym", + "day": "Push", + "date": "2026-09-07", + "start_time": "19:00", + "end_time": "18:50", + "note": "Fokus Form, Kontrolle", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "21.25", + "reps": "9", + "done": 0 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "21.25", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "21.25", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "21.25", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "17.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "27.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "27.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "27.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "11.25", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "11.25", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "11.25", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "32.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "32.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "32.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "32.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "32.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "32.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "18.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "18.75", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "18.75", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 38, + "activity": "gym", + "day": "Pull", + "date": "2026-09-09", + "start_time": "19:00", + "end_time": "19:10", + "note": "Zugkraft gut", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "65", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "65", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "65", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "65", + "reps": "7", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "60", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "17.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "17.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "30", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "30", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 39, + "activity": "gym", + "day": "Legs", + "date": "2026-09-11", + "start_time": "19:00", + "end_time": "19:20", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "130", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "130", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "130", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "130", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "60", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "60", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "65", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "65", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "65", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "75", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "75", + "reps": "18", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "75", + "reps": "15", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "70", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "70", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "70", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "3.75", + "reps": "12", + "done": 0 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "3.75", + "reps": "12", + "done": 1 + } + ] + }, + { + "id": 40, "activity": "run", "day": "", - "date": "2026-09-03", - "start_time": "07:15", - "end_time": "07:55", - "note": "Laufrunde", + "date": "2026-09-07", + "start_time": "07:00", + "end_time": "08:00", + "note": "Regen", "fields": { - "distanceKm": "5.0", - "minutes": "32", - "pacePerKm": "6:15", + "distanceKm": "6.4", + "minutes": "44", + "pacePerKm": "6:50", + "heartRate": "147", + "elevation": "29" + }, + "status": "done", + "entries": [] + }, + { + "id": 41, + "activity": "gym", + "day": "Push", + "date": "2026-09-14", + "start_time": "18:15", + "end_time": "18:50", + "note": "Fokus Form, Kontrolle", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "22.5", + "reps": "8", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "22.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "22.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "22.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "17.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "17.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "17.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "12.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "12.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "12.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "32.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "32.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "32.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "20", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "20", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "20", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "20", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "20", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "20", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 42, + "activity": "gym", + "day": "Legs", + "date": "2026-09-18", + "start_time": "18:00", + "end_time": "19:10", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "130", + "reps": "10", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "130", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "130", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "130", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "60", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "62.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "62.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "62.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "75", + "reps": "18", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "75", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "75", + "reps": "15", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "70", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "70", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "70", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "5", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 43, + "activity": "run", + "day": "", + "date": "2026-09-14", + "start_time": "07:15", + "end_time": "08:00", + "note": "", + "fields": { + "distanceKm": "4.2", + "minutes": "29", + "pacePerKm": "6:50", "heartRate": "149", "elevation": "22" }, @@ -2674,91 +4920,514 @@ "entries": [] }, { - "id": 18, + "id": 44, "activity": "ride", "day": "", - "date": "2026-09-05", + "date": "2026-09-20", "start_time": "09:00", - "end_time": "09:50", + "end_time": "10:00", "note": "Ausfahrt", + "fields": { + "distanceKm": "20", + "minutes": "48", + "avgSpeed": "24.9", + "heartRate": "141", + "elevation": "110" + }, + "status": "done", + "entries": [] + }, + { + "id": 45, + "activity": "gym", + "day": "Push", + "date": "2026-09-21", + "start_time": "18:15", + "end_time": "19:20", + "note": "Fokus Form, Kontrolle", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 0, + "weight": "22.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 1, + "weight": "22.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 2, + "weight": "22.5", + "reps": "8", + "done": 1 + }, + { + "exercise": "Push/Bankdrücken KH (je Hand)", + "sort": 3, + "weight": "22.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 0, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 1, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schrägbank KH (je Hand)", + "sort": 2, + "weight": "17.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 0, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 1, + "weight": "30", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Pectoral/Butterfly", + "sort": 2, + "weight": "30", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 0, + "weight": "12.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 1, + "weight": "12.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Seitheben (je Hand)", + "sort": 2, + "weight": "12.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 0, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 1, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Schulterpresse Maschine", + "sort": 2, + "weight": "35", + "reps": "9", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 0, + "weight": "35", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 1, + "weight": "35", + "reps": "11", + "done": 1 + }, + { + "exercise": "Push/Kabel-Trizeps-Pushdown", + "sort": 2, + "weight": "35", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 0, + "weight": "20", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 1, + "weight": "20", + "reps": "12", + "done": 1 + }, + { + "exercise": "Push/Trizeps-Strecken (French Press Maschine)", + "sort": 2, + "weight": "20", + "reps": "14", + "done": 0 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 0, + "weight": "18.75", + "reps": "14", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 1, + "weight": "18.75", + "reps": "13", + "done": 1 + }, + { + "exercise": "Push/Kabel-Curls (Bizeps)", + "sort": 2, + "weight": "18.75", + "reps": "11", + "done": 1 + } + ] + }, + { + "id": 46, + "activity": "gym", + "day": "Pull", + "date": "2026-09-23", + "start_time": "18:00", + "end_time": "19:10", + "note": "Zugkraft gut", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 0, + "weight": "67.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 1, + "weight": "67.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 2, + "weight": "67.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Latzug / Klimmzug-Maschine", + "sort": 3, + "weight": "67.5", + "reps": "5", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 0, + "weight": "62.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 1, + "weight": "62.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 2, + "weight": "62.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Pull/Rudern (Low Row)", + "sort": 3, + "weight": "62.5", + "reps": "10", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 0, + "weight": "32.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 1, + "weight": "32.5", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Face Pulls", + "sort": 2, + "weight": "32.5", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 0, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 1, + "weight": "20", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Kabel-Curls hoch (Bizeps)", + "sort": 2, + "weight": "20", + "reps": "13", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 0, + "weight": "30", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 1, + "weight": "30", + "reps": "14", + "done": 1 + }, + { + "exercise": "Pull/Reverse Fly (Rückwärtsheben)", + "sort": 2, + "weight": "30", + "reps": "13", + "done": 1 + } + ] + }, + { + "id": 47, + "activity": "gym", + "day": "Legs", + "date": "2026-09-25", + "start_time": "18:00", + "end_time": "19:10", + "note": "", + "fields": {}, + "status": "done", + "entries": [ + { + "exercise": "Legs/Beinpresse", + "sort": 0, + "weight": "132.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 1, + "weight": "132.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 2, + "weight": "132.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/Beinpresse", + "sort": 3, + "weight": "132.5", + "reps": "5", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 0, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 1, + "weight": "62.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Beinbeuger (Leg Curl)", + "sort": 2, + "weight": "62.5", + "reps": "7", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 0, + "weight": "65", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 1, + "weight": "65", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Beinstrecker (Leg Extension)", + "sort": 2, + "weight": "65", + "reps": "13", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 0, + "weight": "77.5", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 1, + "weight": "77.5", + "reps": "15", + "done": 1 + }, + { + "exercise": "Legs/Wadenheben stehend", + "sort": 2, + "weight": "77.5", + "reps": "17", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 0, + "weight": "72.5", + "reps": "12", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 1, + "weight": "72.5", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/Glute Press / Hip Thrust", + "sort": 2, + "weight": "72.5", + "reps": "9", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 0, + "weight": "6.25", + "reps": "11", + "done": 1 + }, + { + "exercise": "Legs/(opz.) Bauch-Finisher (Ab Crunch)", + "sort": 1, + "weight": "6.25", + "reps": "12", + "done": 1 + } + ] + }, + { + "id": 48, + "activity": "run", + "day": "", + "date": "2026-09-21", + "start_time": "18:30", + "end_time": "08:00", + "note": "Lockerer Lauf", + "fields": { + "distanceKm": "4.5", + "minutes": "30", + "pacePerKm": "6:39", + "heartRate": "166", + "elevation": "46" + }, + "status": "done", + "entries": [] + }, + { + "id": 49, + "activity": "ride", + "day": "", + "date": "2026-09-27", + "start_time": "09:00", + "end_time": "10:00", + "note": "Mit Gegenwind", "fields": { "distanceKm": "14", - "minutes": "37", - "avgSpeed": "22.8", - "heartRate": "139", - "elevation": "70" - }, - "status": "done", - "entries": [] - }, - { - "id": 19, - "activity": "run", - "day": "", - "date": "2026-09-10", - "start_time": "07:15", - "end_time": "07:55", - "note": "Laufrunde", - "fields": { - "distanceKm": "5.5", - "minutes": "35", - "pacePerKm": "6:06", - "heartRate": "148", - "elevation": "26" - }, - "status": "done", - "entries": [] - }, - { - "id": 20, - "activity": "run", - "day": "", - "date": "2026-09-17", - "start_time": "07:15", - "end_time": "07:55", - "note": "Laufrunde", - "fields": { - "distanceKm": "6.0", - "minutes": "38", - "pacePerKm": "5:57", - "heartRate": "147", - "elevation": "30" - }, - "status": "done", - "entries": [] - }, - { - "id": 21, - "activity": "ride", - "day": "", - "date": "2026-09-19", - "start_time": "09:00", - "end_time": "09:50", - "note": "Ausfahrt", - "fields": { - "distanceKm": "18", - "minutes": "44", - "avgSpeed": "24.4", - "heartRate": "141", - "elevation": "90" - }, - "status": "done", - "entries": [] - }, - { - "id": 22, - "activity": "run", - "day": "", - "date": "2026-09-24", - "start_time": "07:15", - "end_time": "07:55", - "note": "Laufrunde", - "fields": { - "distanceKm": "6.5", - "minutes": "42", - "pacePerKm": "5:48", - "heartRate": "146", - "elevation": "34" + "minutes": "40", + "avgSpeed": "20.9", + "heartRate": "156", + "elevation": "118" }, "status": "done", "entries": [] diff --git a/tests/test_auth.py b/tests/test_auth.py index f946ce2..a131bed 100644 --- a/tests/test_auth.py +++ b/tests/test_auth.py @@ -147,7 +147,14 @@ def main(): st, imp = req("POST", "/api/import", {"format": "trainingsplan-export-v2", "data": json.dumps(demo)}, token=token_b) - check("Demo-Import in Berta", st == 200 and imp["created"] == 22, imp) + demo_sessions = len(demo["sessions"]) + demo_gym = sum(1 for s in demo["sessions"] if s["activity"] == "gym") + demo_ex_dates = len({s["date"] for s in demo["sessions"] + for e in s.get("entries", []) + if e.get("exercise") == "Push/Bankdrücken KH (je Hand)" + and e.get("weight")}) + check("Demo-Import in Berta", st == 200 + and imp["created"] == demo_sessions, imp) # --- Berta trainiert selbst ------------------------------------------- st, sess_b = req("POST", "/api/sessions", @@ -161,8 +168,8 @@ def main(): st, done_b = req("GET", "/api/sessions?status=done", token=token_b) st, done_a = req("GET", "/api/sessions?status=done", token=token_a) - check("Isolation: B sieht 23 eigene Sessions (22 Demo + 1)", - len(done_b) == 23, len(done_b)) + check("Isolation: B sieht alle Demo-Sessions + 1 eigene", + len(done_b) == demo_sessions + 1, len(done_b)) check("Isolation: A sieht seine 1 Session (nicht B)", len(done_a) == 1, len(done_a)) @@ -191,22 +198,23 @@ def main(): # --- Workouts-API ----------------------------------------------------- st, wo_b = req("GET", "/api/workouts", token=token_b) - check("Workouts-API: 23 Workouts", st == 200 and len(wo_b) == 23, len(wo_b)) + check("Workouts-API: alle Demo-Workouts + eigene", + st == 200 and len(wo_b) == demo_sessions + 1, len(wo_b)) w = wo_b[0] # neueste Session = Berta heute check("Workouts-API: Shape", w["activity_name"] == "Gym (Kraft)" and w["day"] == "Push" and w["duration_min"] is not None and w["exercises"][0]["name"] == "Bankdrücken KH (je Hand)" and w["exercises"][0]["sets"][0]["weight"] == "40", w) st, wo_b = req("GET", "/api/workouts?activity=gym", token=token_b) - check("Workouts nach Import (gym): 15 Demo + 1 eigene", len(wo_b) == 16, - len(wo_b)) + check("Workouts nach Import (gym): Demo + 1 eigene", + len(wo_b) == demo_gym + 1, len(wo_b)) st, wo_a = req("GET", "/api/workouts", token=token_a) check("A bleibt unberuehrt vom Import", len(wo_a) == 1, len(wo_a)) st, stats = req("GET", "/api/stats?exercise=" + urllib.parse.quote("Push/Bankdrücken KH (je Hand)"), token=token_b) check("Statistik aus Demo-Daten + eigene Session", - st == 200 and len(stats) == 6 + st == 200 and len(stats) == demo_ex_dates + 1 and stats[0]["weight"] < stats[-1]["weight"] and stats[-1]["weight"] == 40, stats)