prd-helpMake your own PRD

Read-only PRD for a coding agent

Nutzer möchte seinen persönlichen Trainingsfortschritt digital und offline auf seinem…

18 of 18 sections ready
1. Problem, goal & success metric
  • Problem: Nutzer möchte seinen persönlichen Trainingsfortschritt digital und offline auf seinem eigenen Gerät festhalten.
  • Ziel: Persönliches Trainingstagebuch mit Trainingsplänen, Übungen pro Trainingstag, Workout-Logging mit vorbefülltem letztem Gewicht, pro Satz variierbare Werte, freies Training, Rest Days ohne Streak-Unterbrechung, Fortschrittsübersicht, Streak-Anzeige, vier Tabs (Home, Training, Freunde, Profil), Home-Header mit rotem Datum/Wochentag und englischem Zitat über rotierenden Hintergrundbildern, vier Panels (Sport, Ernährung, Schlaf, Biohacking) mit PubMed-Studien, BeReal-ähnliche Foto-Funktion unter „Freunde“ – nur Foto, Datum und Uhrzeit, keine Trainingsdaten, Freundschaftsanfragen per Link oder Nutzername, nur Fotos bestätigter Freunde sichtbar, keine Kommentare oder Feed-Algorithmus, Kalender (Apple-Stil) mit eingefärbten Tagen, Fortschritt mit Streak, Monats-Tage, Gesamt-Trainings, Kraftentwicklungs-Graph pro Übung, Gesamtgraph, Muskel-Heatmap mit durchsichtiger Mann/Frau, Rekorde-Panel.
  • Erfolgsmetrik: Nutzer kann einen Trainingsplan anlegen, ein Workout loggen und den Streak einsehen, alles offline auf dem eigenen Gerät.
  • Design-Zusatz: Home-Startbild nimmt den gesamten Bildschirm ein bis zum ersten Runterrollen. Das rotierende Hintergrundbild wechselt alle 10 Sekunden. Das Zitat bleibt den ganzen Tag gleich (zufällig aus 30er-Pool pro Tag, lokal gespeichert). Datum und Wochentag stehen in kleiner roter Schrift mittig auf dem Bild, darunter das Zitat auf Englisch.
2. Users & roles
  • Primär: Eine Person, die eigene Trainingspläne erstellt und Workouts loggt (lokal auf dem Gerät, offline nutzbar).
  • Sekundär: Freunde und Familie, die sich per Link, Nutzername oder über Telefonbuch-Kontakte verbinden, aber nur Fotos (nicht Trainingsdaten) des anderen sehen dürfen.
  • Jeder installiert die App separat auf seinem eigenen Gerät.
  • Sprache: Deutsch.
  • Zusatz: Beim Öffnen der App startet man in Home. Der erste sichtbare Bildschirm nimmt das gesamte Display ein mit Hintergrundbild, rotem Datum/Wochentag und englischem Zitat. Erst beim Runterrollen kommen Button „Hier beginnt dein Training“ und die vier Panels zum Vorschein.
3. Core workflows
  1. App starten: Startet im Reiter „Home“. Der Startbild nimmt das gesamte Display ein: rotierendes Hintergrundbild (alle 10 Sekunden Wechsel), roter Wochentag und Datum mittig, englisches Zitat darunter (zufällig aus 30er-Pool pro Tag, lokal gespeichert, den ganzen Tag gleich).
  2. Home scrollen: Button „Hier beginnt dein Training“ führt zum Reiter „Training“. Unterhalb vier Panels (Sport, Ernährung, Schlaf, Biohacking) in 2x2-Anordnung mit festen PubMed-Links und deutschen Zusammenfassungen.
  3. Training: Auswahl zwischen „Trainingsdatum“, „Trainingstag“, „Plan erstellen“ und „Pläne verwalten“. Bei „Plan erstellen“ Trainings-Split anlegen und Übungen (aus Vorauswahl oder selbst eingegeben) einzelnen Tagen zuordnen. Aktiven Plan unter „Pläne verwalten“ auswählen, alte Pläne löschen.
  4. Trainingstag wählen: Übungen des letzten gleichen Tages samt letztem Gewicht pro Satz werden vorbefüllt. Option „Freies Training“ (spontane Übungsauswahl) oder „Rest Day“ (unterbricht Streak nicht). Übungen im Plan flexibel änderbar.
  5. Training speichern oder Entwurf verwerfen.
  6. Freunde: Unterteilt in „Community“ (Fotos bestätigter Freunde, neueste oben, eigene oben, auch ohne eigenes Bild sichtbar, Text-Behind-Subject mit Datum/Uhrzeit), „Freunde finden“ (Suche nach Nutzernamen/Kürzel, Kontaktvorschläge aus Telefonbuch bei Erlaubnis, nur Namen und Nummern), „Anfragen“ (annehmen/ablehnen, roter Punkt bei neuen Anfragen).
  7. Profil: Name, Profilbild, Kürzel (weiterleitbar über kleinen Pfeil in andere soziale Netzwerke), Panels „Kalender“ (Apple-Stil, Tage eingefärbt: Pull blau, Push rot, Rest Day weiß), „Fortschritt“ (Streak, Monats-Tage, Gesamt-Trainings, Kraftgraph pro Übung als Tagesdurchschnitt, Gesamtgraph, Muskel-Heatmap mit durchsichtiger Mann/Frau, Rekorde), „Tagebuch".
  8. Direkt zum Home-Bild ohne separates Onboarding.
4. Features & requirements
  1. Trainingsplan erstellen: Trainingstage anlegen und Übungen jedem Tag direkt zuordnen. Übungen aus Vorauswahl oder selbst eingegeben. Übungen im Plan jederzeit flexibel änderbar.
  2. Workout loggen: Trainingstag wählen; Übungen samt letztem Gewicht, Sätzen und Wiederholungen werden vorgefüllt; pro Satz Gewicht, Sätze und Wiederholungen eingeben (Werte können pro Satz variieren).
  3. Freies Training: Übungen spontan ohne Plan auswählen und loggen.
  4. Rest Day: Ruhetag protokollieren; unterbricht den Streak nicht.
  5. Fortschritt anzeigen: Übersicht über bisherige Einträge pro Übung.
  6. Streak anzeigen: Anzahl der Tage in Folge, an denen der Nutzer sich eingetragen hat (Workout oder Rest Day).
  7. Foto posten: Nutzer macht ein Foto; gespeichert werden nur das Foto, Datum und Uhrzeit; keine Trainingsdaten. Upload nur online. Foto erscheint im Community-Feed von bestätigten Freunden. Text-Behind-Subject-Effekt mit Datum und Uhrzeit im Foto.
  8. Freundschaftsanfrage per Link oder Nutzername: Link erzeugen, in anderen sozialen Netzwerken teilen, empfangene Anfragen annehmen/ablehnen. Roter Punkt bei neuen Anfragen.
  9. Freundes-Feed (Community): Nur Fotos der bestätigten Freunde sehen, sortiert nach Datum/Uhrzeit. Eigene Fotos auch ohne eigenes hochgeladenes Bild sichtbar. Text-Behind-Subject-Effekt mit Datum und Uhrzeit im Foto.
  10. Kalender: Apple-Stil, Tage eingefärbt nach Trainingstyp (Pull blau, Push rot, Rest Day weiß).
  11. Fortschritts-Panel: Streak, Monats-Tage, Gesamt-Trainings, Kraftgraph pro Übung (Tagesdurchschnitt), Gesamtgraph, Muskel-Heatmap (durchsichtiger Mann/Frau auswählbar), Rekorde-Panel.
  12. Home-Startbild: Vollbild-Hintergrundbild (rotiert alle 10 Sekunden, 15 Bilder im Stil dunkel/nebelhaft/fotorealistisch: Gym, Laufen, Radfahren, Schwimmen, Leichtathletik; 4 beigefügte Bilder unter images/, 11 weitere vom Agenten im gleichen Stil), roter Wochentag und Datum mittig, englisches Zitat darunter (zufällig aus 30er-Pool pro Tag, lokal gespeichert). Button „Hier beginnt dein Training“ erscheint erst nach Scrollen.
  13. Telefonbuch-Kontaktvorschläge: Lesen von Kontaktnamen und Telefonnummern bei Erlaubnis des Nutzers.
5. Scope: must / later / never

Must: persönlicher Trainingsplan, Übungen pro Trainingstag zuordnen, Workout loggen mit vorbefülltem letzten Gewicht, pro Satz unterschiedliche Werte, freies Training, Rest Day, Fortschrittsübersicht. Later: Freunde/Familie einladen, gemeinsame Einträge sehen, Statistiken und Diagramme. Never: soziale Feed-Funktionen, Kommentare, Live-Streaming, bezahlte Abos.

6. Screens & UI
  1. Home: Vollbild-Hintergrundbild (rotiert alle 10 Sekunden, 15 Bilder im Stil dunkel/nebelhaft/fotorealistisch: Gym, Laufen, Radfahren, Schwimmen, Leichtathletik; 4 beigefügte Bilder unter images/, 11 weitere vom Agenten im gleichen Stil), roter Wochentag und Datum mittig, englisches Zitat darunter (zufällig aus 30er-Pool pro Tag, lokal gespeichert). Scrollen enthüllt Button „Hier beginnt dein Training“ und vier Panels (Sport, Ernährung, Schlaf, Biohacking) in 2x2-Anordnung mit PubMed-Links und deutschen Zusammenfassungen. Siehe images/screenshot-1.jpg (Liquid Glass Referenz) und images/A2B6F9A8-..., images/9FE4B18E-..., images/AEFFD651-..., images/AD7445A4-... (Dunkle, vernebelte, fotorealistische Stimmung).images/screenshot-1.jpg
  2. Training: Übersicht mit „Trainingsdatum“, „Trainingstag“, „Plan erstellen“, „Pläne verwalten“. Ganz unten Buttons „Training speichern“ und „Entwurf verwerfen".
  3. Plan erstellen/bearbeiten: Trainingstage anlegen, Übungen (aus Vorauswahl oder selbst eingegeben) jedem Tag zuordnen, Übungen flexibel änderbar.
  4. Workout loggen: Trainingstag auswählen, Übungen mit vorbefülltem letztem Gewicht/Sätzen/Wiederholungen anzeigen, pro Satz Werte eintragen.
  5. Freies Training: Übungssuche/auswahl, pro Satz Gewicht, Sätze, Wiederholungen eintragen.
  6. Rest Day: Ruhetag protokollieren.
  7. Freunde: Drei Unterbereiche „Community“, „Freunde finden“, „Anfragen“. Community: Fotos bestätigter Freunde, neueste oben, eigenes Bild oben, Text-Behind-Subject mit Datum/Uhrzeit, kein Doppelkamera-Effekt, eigene Fotos auch ohne eigenes Bild sichtbar. Freunde finden: Suchleiste für Nutzernamen/Kürzel, Kontaktvorschläge aus Telefonbuch (Namen und Nummern). Anfragen: Annehmen/ablehnen, roter Punkt bei neuen Anfragen.
  8. Profil: Name, Profilbild, Kürzel (weiterleitbar), Panels „Kalender“, „Fortschritt“, „Tagebuch“. Kalender: Apple-Stil, Tage eingefärbt (Pull blau, Push rot, Rest Day weiß). Fortschritt: Streak, Monats-Tage, Gesamt-Trainings, Kraftgraph pro Übung, Gesamtgraph, Muskel-Heatmap (durchsichtiger Mann/Frau), Rekorde.
  9. Einstellungen: Dunkelmodus (Standard), App-Infos.
7. Design system & visual style

Dunkelmodus ist Standard. Akzentfarbe elektrisches Rot #FF1744. Abgerundete Ecken (Border Radius 12–16 px). Cleanes Layout mit viel Weißraum auf dunklem Grund. Apple Liquid Glass Optik: halbtransparente, unscharfe Oberflächen mit leichtem Glanz. Typografie: system-ui / San Francisco-ähnliche Schrift. Komponenten-Bibliothek: shadcn/ui mit Tailwind CSS. Die App soll wie eine moderne iOS-App aussehen (siehe Liquid Glass Referenz, falls Screenshot bereitgestellt).

8. Data model

Lokal auf dem Gerät (IndexedDB):

Entität: TrainingsplanFeldTypPflicht
iduuidja
nametextja
erstellt_amdatetimeja
aktualisiert_amdatetimeja
aktivbooleanja
Entität: TrainingstagFeldTypPflicht
iduuidja
plan_iduuidja
nametextja
wochentaginteger (0–6)nein
erstellt_amdatetimeja
Entität: ÜbungFeldTypPflicht
iduuidja
nametextja
eigenebooleanja
Entität: TagesübungFeldTypPflicht
iduuidja
trainingstag_iduuidja
uebung_iduuidja
sortierungintegerja
Entität: Workout-EintragFeldTypPflicht
iduuidja
trainingstag_iduuidnein
typtext (training, frei, rest)ja
datumdateja
logged_amdatetimeja
Entität: SatzFeldTypPflicht
iduuidja
workout_entry_iduuidja
uebung_iduuidja
satz_nrintegerja
gewichtdecimalnein
wiederholungenintegernein
Entität: Zitat-TageswahlFeldTypPflicht
datumdateja
zitat_indexinteger (0–29)ja

In Supabase (Cloud):

Entität: FreundschaftFeldTypPflicht
iduuidja
nutzer_iduuidja
freund_iduuidja
statustext (offen, angenommen, abgelehnt)ja
link_tokentextnein
erstellt_amdatetimeja
Entität: FotoFeldTypPflicht
iduuidja
nutzer_iduuidja
bild_urltextja
datumdateja
uhrzeittimeja
erstellt_amdatetimeja
9. APIs & integrations

Supabase Free Tier für: Speicherung von Freundschaftsfotos (nur Foto-Datei, Datum, Uhrzeit, Nutzer-ID), Freundschaftsanfragen (Sender, Empfänger, Status: offen/angenommen/abgelehnt, Link-Token). Keine Integration mit sozialen Netzwerken für den Upload; der Nutzer kopiert den Link manuell und teilt ihn dort.

10. Auth, permissions & security

Kein Benutzerkonto für das lokale Trainingstagebuch. Für die Freundes-Foto-Funktion: E-Mail-Anmeldung über Supabase Auth. Jeder Nutzer hat eine eigene Nutzer-ID. Nur bestätigte Freunde dürfen die Fotos des anderen sehen. Keine Passwort-Wiederherstellung im Must-have (später).

11. Performance, privacy & accessibility

Performance: erster Bildschirm unter 3 Sekunden, Bilder max. 300 KB. Datenschutz: Trainingsdaten verlassen das Gerät nie, Cloud nur Fotos und Freundschaftsstatus, Telefonbuch nur Namen und Nummern nach Erlaubnis. Barrierefreiheit: WCAG AA Kontrast, keine Alt-Texte.

12. Edge cases & errors

Offline-Upload wird nachgeholt; keine Freunde zeigt Hinweis; verweigerter Kontaktzugriff blendet Vorschläge aus; doppelte Anfragen werden verhindert; Löschen und Verwerfen mit Bestätigung; fehlendes Vorgewicht bleibt leer; Fotos werden verkleinert; Zitat-Fallback.

13. Stack & constraints

Progressive Web App (PWA) gehostet auf Vercel. Frontend mit React oder Vue und shadcn/ui + Tailwind CSS. Lokale Speicherung auf dem Gerät (IndexedDB oder LocalStorage) für Trainingspläne, Workouts, Fortschritt und Streak. Kein Backend für die persönlichen Daten. Für die Freundes-Foto-Funktion eine Cloud-Datenbank (z. B. Supabase Free Tier) für Fotos, Datum/Uhrzeit und Freundschaftsanfragen. Installierbar über den Browser auf iPhone und Android. Offline nutzbar für Workouts; Foto-Upload und Freundschaftsanfragen nur online.

14. Existing code & do-not-change

Not needed: Neues Projekt, kein bestehender Code.

15. Build order
  1. Startbildschirm und Navigation: Vier Tabs (Home, Training, Freunde, Profil) unten in der App. Home zeigt das Vollbild-Startbild mit rotierendem Hintergrund (alle 10 Sekunden), rotem Datum/Wochentag und dem Tageszitat aus dem 30er-Pool. Erst beim Runterscrollen erscheinen der Button „Hier beginnt dein Training“ und die vier Panels mit PubMed-Links. Klickbar im Browser und auf dem Smartphone installierbar.
  2. Training lokal: Pläne anlegen, Trainingstage hinzufügen, Übungen aus Vorauswahl oder eigene zuordnen, Pläne aktivieren/löschen. Trainingstag wählen (Vorbefüllung mit letztem Gewicht pro Satz), freies Training und Rest Day loggen, speichern oder verwerfen. Vollständig offline.
  3. Profil und Fortschritt lokal: Kalender im Apple-Stil mit eingefärbten Tagen (Pull blau, Push rot, Rest Day weiß), Streak, Monats-Tage, Gesamt-Trainings, Kraftgraph pro Übung, Gesamtgraph, Muskel-Heatmap mit Mann/Frau-Auswahl, Rekorde und Tagebuch. Vollständig offline.
  4. Freunde mit Cloud: E-Mail-Anmeldung über Supabase Auth, Community-Feed mit Foto-Upload (Text-Behind-Subject mit Datum/Uhrzeit), Freunde finden per Nutzername/Kürzel, Telefonbuch-Vorschläge nach Erlaubnis, Anfragen mit rotem Punkt. Upload wird nachgeholt, wenn wieder online.
  5. Feinschliff und Bereitstellung: Ladezeit prüfen (unter 3 Sekunden), Bestätigungsdialoge für Löschen und Verwerfen, Fehlermeldungen, Dunkelmodus und Liquid-Glass-Optik abgleichen, Deployment auf trainingsstagebuch.vercel.app.
16. Acceptance criteria & tests
  • Home-Ablauf: Beim Öffnen zeigt die App das Vollbild-Startbild mit Datum, Wochentag und Zitat. Das Bild wechselt alle 10 Sekunden. Erst nach dem Scrollen erscheinen der Button „Hier beginnt dein Training“ und die vier Panels.
  • Ladezeit: Der erste sichtbare Bildschirm erscheint in unter 3 Sekunden auf einem mittleren Smartphone.
  • Tageszitat: Das Zitat ist den ganzen Tag gleich und wechselt am nächsten Tag.
  • Plan und Training: Ein Plan mit Trainingstagen und Übungen lässt sich anlegen, aktivieren und löschen. Ein Workout mit vorbefülltem letztem Gewicht pro Satz lässt sich speichern.
  • Freies Training und Rest Day: Freies Training und Rest Day lassen sich loggen. Rest Day unterbricht den Streak nicht.
  • Streak: Der Streak zählt Tage in Folge mit Workout oder Rest Day.
  • Offline: Workouts und Pläne funktionieren ohne Internet.
  • Foto-Upload: Ein Foto, das offline gemacht wurde, wird beim nächsten Online-Zugang hochgeladen.
  • Freunde-Sichtbarkeit: Nur Fotos bestätigter Freunde sind sichtbar, auch wenn man selbst kein Bild hochgeladen hat.
  • Anfragen: Eine neue Anfrage zeigt einen roten Punkt am Button „Anfragen“. Doppelte Anfragen werden verhindert.
  • Kalenderfarben: Pull blau, Push rot, Rest Day weiß.
  • Bestätigung: Löschen und Verwerfen verlangen eine Bestätigung.
  • Kontakte: Ohne Erlaubnis fürs Telefonbuch erscheinen keine Kontaktvorschläge.
17. Deployment, environments & secrets
  • Hosting: Vercel, kostenloser Tarif, Domain trainingsstagebuch.vercel.app.
  • Umgebungen: Eine Produktionsumgebung plus lokale Entwicklungsumgebung.
  • Secrets: Supabase-URL und Anon-Key als Vercel-Umgebungsvariablen; kein Service-Key im Frontend.
  • Datenbank: Supabase Free Tier, Row-Level-Security aktiv, Nutzer sehen nur eigene Daten und Daten bestätigter Freunde.
18. Open questions & assumptions
  • Default: Zitat-Fallback bei fehlendem Pool: fester Satz „Keep going.“
  • Default: Telefonbuch nur Namen und Nummern, keine E-Mail-Adressen.
  • Default: Fotos werden vor dem Upload auf maximal 1080 px verkleinert.
  • Default: Kein Onboarding, direkter Start im Home-Bild.
  • Default: Kein Passwort-Reset im ersten Release.
  • Default: Deployment auf Vercel mit einer Produktionsumgebung plus lokaler Entwicklung; Supabase-Schlüssel nur als Umgebungsvariablen.
  • Default: Akzeptierte Bildformate für Fotos sind JPEG und PNG.

Images

screenshot-1.jpg
images/screenshot-1.jpg
A2B6F9A8-54C9-4532-B7A5-F8EB69F1145F_1_105_c.jpg
images/A2B6F9A8-54C9-4532-B7A5-F8EB69F1145F_1_105_c.jpg
9FE4B18E-C585-4CB6-B938-106457B6488C_1_105_c.jpg
images/9FE4B18E-C585-4CB6-B938-106457B6488C_1_105_c.jpg
AEFFD651-7772-4D7E-8790-ECDDCA482463.jpg
images/AEFFD651-7772-4D7E-8790-ECDDCA482463.jpg
AD7445A4-4755-44DE-B066-4CBAEEBA1CE6.jpg
images/AD7445A4-4755-44DE-B066-4CBAEEBA1CE6.jpg