dashboard Project Overview

check_circle
Passing
CI Status — GitHub Actions ↗
science
571 / 2418
Tests (BE + FE)
task_alt
1
Active Plans
bug_report
1
Open Bugs

Current Work

  • PLAN_F08_offline-support.md — F08 offline support

Recent Completions

  • Unreleased
  • v3.5.1 (17.04.2026) — 7 Bugfixes, 3 Verbesserungen
  • v3.5.0 (12.04.2026) — 4 Features, 14 Bugfixes, 2 Sonstiges

menu_book App-Dokumentation

Vollständige Anwenderdokumentation — wie PetWatch funktioniert und wie man es bedient.

login

Anmeldung & Registrierung

Account erstellen, einloggen, Gast-Modus, Google-Login.

dashboard

Dashboard

Tagesübersicht, Schnellaktionen, Streak, nächste Fütterung.

restaurant

Fütterung

Mahlzeiten erfassen, Kalorien tracken, Futterplan, Produktsuche.

directions_walk

Spaziergänge

GPS-Tracking, Live-Karte, Ereignisse, Walk-Historie, Heatmap.

fitness_center

Training

Trainingseinheiten, Übungen, Erfolgsbewertung.

calendar_month

Kalender

Tierarzttermine, Impfungen, Erinnerungen.

folder

Dokumente

Impfpass, Gesundheitsakten, Fotos hochladen und verwalten.

checklist

Checklisten

To-Do-Listen pro Haustier erstellen und abhaken.

emoji_events

Gamification

Streaks, Achievements, Avatar, XP-System, Level.

settings

Einstellungen

Sprache, Theme, Benachrichtigungen, Account-Verwaltung.

monitor_heart

Gesundheit

Gewicht-Tracking, Kalorienübersicht, Impfpass, Spazierziel.

login

Anmeldung & Registrierung

Erstelle ein Konto, melde dich an oder probiere PetWatch im Gastmodus aus — ganz ohne Registrierung.

format_list_numbered So funktioniert's

  1. App öffnen und auf "Registrieren" tippen
  2. E-Mail-Adresse und Passwort eingeben
  3. Alternativ: "Mit Google anmelden" für einen schnellen Login
  4. Oder "Als Gast fortfahren" zum Ausprobieren ohne Konto

lightbulb Tipps & Hinweise

info Der Gastmodus speichert Daten nur lokal auf deinem Gerät — es gibt kein Cloud-Backup. Deine Daten gehen verloren, wenn du die App deinstallierst.
info Du kannst jederzeit vom Gastmodus auf ein volles Konto wechseln: Profil → "Konto erstellen".
info Google-Login ist der schnellste Weg — ein Tipp und du bist drin.

image Screenshots

Login-Screen
Login
Registrierung
Registrierung
Login Dark Mode
Dark Mode

link Verwandte Funktionen

dashboard

Dashboard

Deine Tagesübersicht auf einen Blick — was heute ansteht, Schnellaktionen und dein aktueller Streak.

format_list_numbered So funktioniert's

  1. Nach dem Login landest du automatisch auf dem Dashboard
  2. Oben siehst du deinen Streak und XP-Fortschritt
  3. Die Quick-Actions ermöglichen schnelles Erfassen (Walk starten, Fütterung, Training)
  4. Darunter: heutige Termine und die letzte Fütterung
  5. Zwischen Tieren wechselst du über den Tier-Chip in der App-Leiste

lightbulb Tipps & Hinweise

info Tippe auf den Streak-Bereich für Details zu deinen Achievements.
info Die Quick-Actions passen sich an dein ausgewähltes Tier an.

image Screenshots

Dashboard
Dashboard
Dashboard mit aktivem Walk
Aktiver Walk

link Verwandte Funktionen

restaurant

Fütterung

Erfasse Mahlzeiten, tracke Kalorien und finde das richtige Futter aus über 6.700 Produkten im Katalog.

format_list_numbered So funktioniert's

  1. Tierprofil öffnen und den Tab "Fütterung" auswählen
  2. Plus-Button antippen, um eine Mahlzeit zu erfassen
  3. Zeitpunkt, Futtermenge und optional ein Futter-Produkt auswählen
  4. Produkte über die Suche finden — der Katalog berechnet Kalorien automatisch
  5. Die Kalorienübersicht zeigt Tages- und Wochenziel

lightbulb Tipps & Hinweise

info Die Kalorienberechnung basiert auf dem Gewicht und Aktivitätslevel deines Tieres.
info Du kannst auch eigene Produkte hinzufügen, die nicht im Katalog sind.
info Mehrere Fütterungen pro Tag sind möglich — jede wird einzeln erfasst.

image Screenshots

Fütterung-Liste
Fütterungsplan
Mahlzeit-Formular
Mahlzeit erfassen
Kalorien pro Mahlzeit
Kalorien-Tracking
Kalorienübersicht
Kalorienübersicht

link Verwandte Funktionen

directions_walk

Spaziergänge

Zeichne GPS-Routen auf, markiere Ereignisse unterwegs und sieh deine Walk-Historie als Heatmap.

format_list_numbered So funktioniert's

  1. Auf dem Dashboard den Walk-Button antippen
  2. Tier auswählen und "Walk starten"
  3. GPS-Aufzeichnung läuft — auch bei geschlossener App
  4. Unterwegs: Ereignisse markieren (Pinkelpause, Hundebegegnung, etc.)
  5. Walk beenden — Route, Dauer und Distanz werden gespeichert
  6. Im Verlauf-Tab findest du alle bisherigen Walks
  7. Die Heatmap-Ansicht zeigt alle Routen auf einer Karte

lightbulb Tipps & Hinweise

info Erlaube "Standort immer" in den Berechtigungen für zuverlässiges Hintergrund-Tracking.
info Bei geschlossener App läuft der Walk weiter und wird beim Öffnen wiederhergestellt.
info Die Heatmap zeigt deine Lieblingsstrecken — je öfter du einen Weg gehst, desto intensiver wird er dargestellt.

image Screenshots

Walk starten
Walk starten
Live-Tracking
Live-Tracking
Walk-Verlauf
Walk-Verlauf
Heatmap
Heatmap

link Verwandte Funktionen

fitness_center

Training

Dokumentiere Trainingseinheiten mit deinem Tier — Übungen, Dauer und Erfolgsbewertung.

format_list_numbered So funktioniert's

  1. Tierprofil öffnen und den Tab "Training" auswählen
  2. Plus-Button antippen, um eine neue Trainingseinheit zu erstellen
  3. Übungstyp auswählen und Dauer eingeben
  4. Erfolg bewerten (1–5 Sterne)
  5. Optional: Notizen hinzufügen für zusätzliche Details

lightbulb Tipps & Hinweise

info Regelmäßiges Training stärkt die Bindung zu deinem Tier.
info Nutze die Sterne-Bewertung, um den Fortschritt über die Zeit zu verfolgen.
info Training zählt auch für deinen täglichen Streak!

image Screenshots

Training-Liste
Training-Übersicht
Training-Formular
Training erfassen

link Verwandte Funktionen

calendar_month

Kalender

Behalte alle Termine im Blick — Tierarztbesuche, Impfungen, Medikamente und eigene Erinnerungen.

format_list_numbered So funktioniert's

  1. Den Kalender-Tab in der Navigation öffnen
  2. Plus-Button antippen, um einen neuen Termin zu erstellen
  3. Titel, Datum, Uhrzeit und Typ auswählen (Tierarzt, Impfung, Medikament, etc.)
  4. Optional: Tier zuordnen und eine Beschreibung hinzufügen
  5. Termine werden in der Monats- und Tagesansicht angezeigt

lightbulb Tipps & Hinweise

info Termine werden auch auf dem Dashboard angezeigt, damit du nichts verpasst.
info Du kannst Termine für alle Tiere anzeigen oder nach einem bestimmten Tier filtern.
info Push-Benachrichtigungen für Termin-Erinnerungen kommen bald.

image Screenshots

Kalenderansicht
Monatsansicht
Termin erstellen
Termin erstellen

link Verwandte Funktionen

folder

Dokumente

Speichere wichtige Unterlagen deines Tieres — Impfpass, Laborbefunde, Versicherungen und mehr.

format_list_numbered So funktioniert's

  1. Tierprofil öffnen und den Tab "Dokumente" auswählen
  2. Plus-Button antippen und eine Datei hochladen (PDF, JPG, PNG)
  3. Kategorie zuweisen (Impfpass, Versicherung, Laborbefund, etc.)
  4. Dokument antippen für die Vollbild-Ansicht
  5. Teilen-Button nutzen, um Dokumente per E-Mail oder Messenger weiterzuleiten

lightbulb Tipps & Hinweise

info Fotografiere Papier-Dokumente direkt mit der Kamera — so hast du den Impfpass immer dabei.
info Kategorien helfen beim schnellen Wiederfinden deiner Unterlagen.
info Alle Dokumente werden sicher in der Cloud gespeichert und sind von jedem Gerät abrufbar.

image Screenshots

Fotos
Fotos & Bilder
Dateien
Dokumente & Dateien

link Verwandte Funktionen

checklist

Checklisten

Erstelle To-Do-Listen pro Haustier — für den Tierarztbesuch, Urlaub oder den Alltag.

format_list_numbered So funktioniert's

  1. Den Checklisten-Tab in der Navigation öffnen
  2. Plus-Button antippen und einen Namen für die Checkliste eingeben
  3. Einträge hinzufügen über das Textfeld oder den Plus-Button
  4. Einträge abhaken durch Antippen
  5. Erledigte Einträge werden durchgestrichen angezeigt

lightbulb Tipps & Hinweise

info Wische einen Eintrag nach links, um ihn zu löschen.
info Checklisten sind pro Tier getrennt — wechsle über den Tier-Chip in der Leiste.
info Nutze Checklisten für wiederkehrende Aufgaben wie "Tierarzt-Packliste" oder "Urlaubsvorbereitung".

image Screenshots

Checklisten-Übersicht
Übersicht
Checkliste-Detail
Geöffnete Liste

link Verwandte Funktionen

emoji_events

Gamification

Sammle XP, halte deinen Streak aufrecht und schalte über 40 Achievements frei — mit deinem virtuellen Pet-Avatar.

format_list_numbered So funktioniert's

  1. Pflege dein Tier regelmäßig — jede Aktion gibt XP
  2. Tägliche Aktionen halten deinen Streak am Leben
  3. Achievements werden automatisch freigeschaltet (z. B. "Erster Walk", "7-Tage-Streak")
  4. Dein Avatar entwickelt sich mit deinem Level weiter
  5. Alle Achievements findest du in der Gamification-Übersicht

lightbulb Tipps & Hinweise

info Ein Walk, eine Fütterung oder ein Training pro Tag reicht für den Streak.
info 41 verschiedene Achievements warten darauf, von dir freigeschaltet zu werden.
info Dein Avatar spiegelt deinen Fortschritt wider und entwickelt sich mit der Zeit weiter.

image Screenshots

Gamification-Übersicht
Übersicht
Achievements
Achievements
Avatar
Avatar & Level

link Verwandte Funktionen

settings

Einstellungen

Passe PetWatch an deine Vorlieben an — Sprache, Design, Benachrichtigungen und Kontoverwaltung.

format_list_numbered So funktioniert's

  1. Den Profil-Tab öffnen und "Einstellungen" auswählen
  2. Sprache: Deutsch oder English
  3. Erscheinungsbild: Hell, Dunkel oder Systemstandard
  4. Benachrichtigungen: Push-Mitteilungen ein- oder ausschalten
  5. Konto: Passwort ändern oder Daten exportieren
  6. Danger Zone: Konto unwiderruflich löschen

lightbulb Tipps & Hinweise

info "Systemstandard" übernimmt automatisch das Design deines Betriebssystems (hell oder dunkel).
info Die Sprachänderung wirkt sofort — kein Neustart nötig.
info Achtung: Die Konto-Löschung in der Danger Zone löscht alle deine Daten unwiderruflich.

image Screenshots

Einstellungen
Einstellungen
Theme-Auswahl
Theme-Auswahl

link Verwandte Funktionen

monitor_heart

Gesundheit

Alle Gesundheitsdaten deines Tieres auf einen Blick — Gewicht-Tracking, Kalorienübersicht und kommende Erweiterungen wie Impfpass und Spazierziel.

format_list_numbered So funktioniert's

  1. Zum Tier-Tab wechseln und den Gesundheitsbereich antippen
  2. Auf der Übersicht siehst du drei Zusammenfassungskarten: aktuelles Gewicht, Kalorien heute und Gewichtstrend
  3. Im Gewichtsbereich: "Gewicht eintragen" antippen, Kilogramm eingeben und bestätigen
  4. "Alle anzeigen" öffnet die Gewicht-Detailseite mit Verlaufschart und Eintrags-Historie
  5. Im Chart kannst du den Zeitraum wählen: 1 Monat, 3 Monate, 6 Monate oder Alle
  6. "Details" bei Kalorien öffnet die Kalorienübersicht mit Tagesziel, aufgenommener Menge und Faktor-Aufschlüsselung
  7. Impfpass und Spazierziel werden als Vorschau-Karten angezeigt — diese Features folgen in einem zukünftigen Update

lightbulb Tipps & Hinweise

info Das Kalorienziel wird automatisch berechnet aus: Gewicht, Rasse, Alter und Aktivitätslevel. Die Formel (MER = RER x Aktivitätsfaktor) ist auf der Kaloriendetailseite erklärt.
info Trage zuerst das Gewicht ein — ohne Gewicht kann kein Kalorienziel berechnet werden.
info Der Gewichtstrend zeigt die Differenz zum vorherigen Eintrag: grün bei Abnahme, rot bei Zunahme.
info Einzelne Gewichtseinträge können auf der Detailseite per Swipe oder über das Menü gelöscht werden.

image Screenshots

Gesundheitsübersicht
Übersicht
Gewicht-Detail
Gewicht-Detail
Kalorien-Detail
Kalorien-Detail

link Verwandte Funktionen

route Roadmap

Nächstes Release Nächstes Release

Noch keine Items eingeplant

history Changelog

Unreleased Aktuelle Entwicklung
expand_more
v3.5.1 17.04.2026
expand_more

Bugfixes

  • BUG22: Active Walk bei geteiltem Pet zerstört Tracking — Wenn ein shared User einen Walk startete und ein anderer User die App öffnete, restaurierte checkAndRestoreActiveWalkAsync den fremden Walk und startete GPS lokal, was Walk-Daten korrumpierte. Fix: Zwei neue Backend-Endpoints (GET /active/mine + GET /active), Frontend unterscheidet über activeWalk vs. foreignActiveWalk Signal. GPS startet nur für eigene Walks, fremde Walks zeigen read-only Banner ("{name} ist unterwegs mit {petName}"). Defense-in-depth Ownership-Guard im Walk-Tracker. 7 Backend-Tests + 10 Frontend-Tests.
  • BUG23: Manueller Walk Dauer-Eingabe kaputt — inputmode="numeric" zeigte numerische Tastatur ohne Doppelpunkt, HH:MM-Format war nicht eingebbar. Außerdem wurden reine Minutenwerte wie "60" vom Regex-Validator abgelehnt. Fix: Freitext-Feld ersetzt durch Toggle zwischen Dauer-Modus (zwei separate Stunden/Minuten-Felder) und Endzeitpunkt-Modus (nativer Time-Picker). Next-Day-Handling wenn Endzeit vor Startzeit liegt. 9 Component-Tests + 5 Utility-Tests.
  • BUG25: Pet-Profil QR-Code zeigte falschen Titel "Notfallkarte teilen" und unnötige Ablaufzeit-Konfiguration. QR im Profil ist zum Ausdrucken/Halsband — Link ist jetzt permanent. Notfallkarte-Share behält Ablaufzeit-Optionen. Backend: ExpiresAt nullable, null = permanent. Frontend: mode-Flag (pet-profile vs emergency) steuert UI. 3 Backend-Tests + 5 Frontend-Tests.
  • BUG24: Kalender-Events für shared User unsichtbar — CalendarRepository filterte nach CreatedByUserId statt nach Pet-Zugehörigkeit. Shared User sahen keine vom Owner angelegten Termine (Tierarzt, Erinnerungen). Fix: Pet-Access-Filter (Pet.OwnerId == userId || Pet.Accesses.Any(...)) in GetUpcomingEventsForUserAsync und GetRecurringMastersForUserAsync. 4 neue Tests.
  • BUG21: Futter-Produkte bei Pet-Sharing nicht sichtbar — geshared User sah leere Produktliste im Meal-Logging, obwohl Produkte an Feedings des geteilten Pets hingen. Ursache: GET /api/food-products filterte strikt nach CreatedByUserId. Fix: Optionaler ?petId= Query-Param, liefert Union aus eigenen Produkten + Produkten an Feedings des Pets (single SELECT ... WHERE ... IN (subquery) — kein UNION). Authorization: UserHasAccessToPetAsync-Check, kein Leak der Owner-Bibliothek. Frontend reicht petId im Meal-Logging-Flow durch (meal-form-sheet → product-picker → facade → service). Library-Aufrufer bleiben unverändert (user-scoped). 7 Integration-Tests (Shared Access, Authorization, Soft-Delete, Distinct, Library-Isolation) + 10 Frontend-Specs.
  • BUG19: Fütterung bearbeiten schlug mit "Failed to save" fehl, sobald eine bestehende Mahlzeit geändert wurde (z.B. Notiz nachtragen). Ursache: MealService.UpdateMealAsync hängte neue Feeding-Objekte per meal.Items.Add(...) an den getrackten meal-Graph an; weil BaseEntity die Id im Konstruktor bereits mit Guid.NewGuid() belegt, klassifizierte EF Core die Zeilen als Modified statt Added, SaveChangesAsync warf DbUpdateConcurrencyException → 500. Fix: Neue Repository-Methode IMealRepository.AddItemsAsync (DbSet.AddRange ohne SaveChanges) erzwingt den Added-State, danach werden die Items mit Contains-Guard an meal.Items gehängt. Atomicity bleibt erhalten (ein SaveChanges im abschließenden UpdateAsync). Neuer Integration-Test MealServiceUpdateIntegrationTests sperrt den Bug ab.
  • BUG17 Follow-up: Push "Eintragen"-Button zeigte weiterhin "Fehler — bitte App öffnen". Ursache: PushActionAuthHelper.postAuthenticated setzte setDoOutput(false) ohne Content-Length, wodurch der POST auf Android mit ProtocolException (-1) abstürzte und nie in den 401-Refresh-Pfad kam. Fix: setFixedLengthStreamingMode(0) + leerer OutputStream-Flush erzwingt gültigen body-losen POST. Timeouts auf 15s erhöht, Fehler-Logs inkl. Exception-Class für zukünftige Diagnose.

Verbesserungen

  • QR-Branding: Branded QR-Codes mit grünen Dot-Modulen, PetWatch-Paw-Logo im Zentrum und Standard-Finder-Patterns. Drei Bugs im Custom-QR-Generator (ISO 18004) behoben: Masking korrumpierte Funktionsmodule (fnMap-Tracking), falsche EC-Codewords pro Block für v4-6, Finder-Patterns als nicht-scannbare Kreise statt Standard-Quadrate. Download exportiert 400×400 PNG mit grünem Rahmen. Playwright-Validierungsscript (scripts/e2e/validate-qr.mjs) bestätigt Scannbarkeit.
  • FAB-Positionssprung bei Seitenwechsel behoben — position: fixed FABs sprangen kurz an falsche Position während Route-Animation, weil transform auf dem Animations-Container einen neuen Containing Block erzeugte. Fix: Shell setzt .route-animating Klasse via Animation-Callbacks, globale CSS-Regel versteckt .pw-fab während der Transition.
  • Fullscreen Walk-Map: Close-Button und Leaflet-Zoom-Controls überlappten Status-Bar und Bottom-Bar. Fix: Safe-Area-Insets (--safe-area-top/bottom/right) für alle Controls.

bug_report Open Bugs

BUG20 Open High (latent — triggers on any training session edit with exercises)
TrainingService.UpdateSessionAsync has identical DbUpdateConcurrencyException pattern

Resolved

BUG01 Fixed High
Safe Area Insets not applied on Android
BUG02 Fixed High
File uploads not served (avatars, documents, walk photos)
BUG03 Fixed Medium
Pet creation form missing frontend validation (parity with backend)
BUG08 Fixed Medium
Missing email validation on registration
BUG07 Fixed Critical
Milestone Celebration overlay cannot be dismissed
BUG10 Fixed Low
Streak week dots don't span across week boundaries
BUG19 Fixed High
Meal edit fails with "Failed to save" (DbUpdateConcurrencyException)

devices Wireframes

Interaktive Wireframes aller App-Screens. Klicke auf einen Eintrag um das Wireframe zu öffnen.

monitoring Cron-Reports

schedule

Cron-Jobs werden in Phase D eingerichtet.
Reports erscheinen hier automatisch.

Last updated: 2026-04-16 — PetWatch Project Dashboard v1.0