dashboard Project Overview
Current Work
PLAN_BUG04_frontend-form-validation.md— BUG04 frontend form validationPLAN_F07_push-notifications.md— F07 push notificationsPLAN_F08_offline-support.md— F08 offline supportPLAN_F16_feeding-schedules.md— F16 feeding schedules
Recent Completions
- Unreleased — 7 Sonstiges
- v2.0.0 (28.03.2026) — 22 Features, 10 Bugfixes, 10 Sonstiges
- v1.0.2 (18.03.2026) — 2 Bugfixes
menu_book App-Dokumentation
Vollständige Anwenderdokumentation — wie PetWatch funktioniert und wie man es bedient.
Anmeldung & Registrierung
Account erstellen, einloggen, Gast-Modus, Google-Login.
Dashboard
Tagesübersicht, Schnellaktionen, Streak, nächste Fütterung.
Fütterung
Mahlzeiten erfassen, Kalorien tracken, Futterplan, Produktsuche.
Spaziergänge
GPS-Tracking, Live-Karte, Ereignisse, Walk-Historie, Heatmap.
Training
Trainingseinheiten, Übungen, Erfolgsbewertung.
Kalender
Tierarzttermine, Impfungen, Erinnerungen.
Dokumente
Impfpass, Gesundheitsakten, Fotos hochladen und verwalten.
Checklisten
To-Do-Listen pro Haustier erstellen und abhaken.
Gamification
Streaks, Achievements, Avatar, XP-System, Level.
Einstellungen
Sprache, Theme, Benachrichtigungen, Account-Verwaltung.
route Roadmap
Low Priority (Post-MVP)
PregnancyStartDate on Pet → distinguish early (factor 1.8) vs late (factor 3.0) gestation for more accurate calorie needs during pregnancy. Currently uses midpoint factor.CaloriesPerUnit field on FoodProduct (e.g. kcal per piece/tablet), unit conversion table (e.g. ml→g density factor per product) for cross-unit calculation. Currently Piece-unit products always show null calories.BroadcastReceiver — beyond Capacitor scope. Deferred from F12.TakenAt timestampWalkPhoto entity only stores upload time (CreatedAt from BaseEntity). Add TakenAt field (photo capture time) for future timeline / map-pin features. Deferred from F12 (R11).IsGuest = true) older than 30 days along with all their associated data (Pets, Feedings, Walks, etc.).@handle) auf ApplicationUser — neues Feld, Uniqueness-Constraint, Migration, Profile-UI zum Setzen/Ändern, Backend-Suchendpoint. Ermöglicht Nutzersuche in F10 per Handle statt nur per E-Mail.GnssStatus.Callback + GnssMeasurementsEvent. iOS: not available.GnssStatus.Callback on Android. < 4 satellites → flag fix as unreliable, raise accuracy threshold dynamically. iOS: not directly available — skip or approximate from horizontalAccuracy trend.docs/konzepte/17-gamification.md Section 5. Deferred from F27.DeletionScheduledAt). User kann sich innerhalb von 14 Tagen erneut einloggen und die Löschung abbrechen. Nach 14 Tagen: Hintergrund-Job löscht Account + alle Daten endgültig (wie aktueller Hard-Delete). Benötigt: neues Feld auf ApplicationUser, Login-Check mit Reaktivierungs-Dialog, Scheduled Job (Hangfire o.ä.).DeviceId-Feld auf ApplicationUser, Capacitor Device Plugin, Backend-Logik für Device-Matching.Technical Debt / Housekeeping
DeletedAt need UI (restore/purge) + background cleanup jobperiodLabel week-end uses local setDate/getDate on UTC-midnight DateperiodLabel computes week-end via end.setDate(end.getDate() + 6) — in UTC-negative timezones this returns the wrong day. Fix: use Date.UTC(..., getUTCDate() + 6) before passing to toLocaleDateString(). Pre-existing, found in BUG04 review.continue-on-error from .github/workflows/ci.yml).backend/src/PetWatch.Persistence/Seeds/global_food_products_seed.sql is 60MB — exceeds GitHub's 50MB recommendation. Move to Git LFS or exclude from repo and load via separate script.@codetrix-studio/capacitor-google-auth@3.4.0-rc.4 requires @capacitor/core@^6 but project uses v8. Works only with legacy-peer-deps=true. Find Capacitor 8-compatible alternative.app.spec.ts has 7 tests that sporadically fail because Angular 21's @angular/build:unit-test builder shares module cache across files (isolate: false). vi.mock('@capacitor/core') from different files compete. All tests pass individually. Options: refactor Capacitor calls behind Angular DI, or wait for upstream fix. CI frontend tests are continue-on-error until fixed.StreakServiceTests.RecordVisitAsync_SameDay_NoOp fails in CI (UTC) but passes locally (CET). Test likely compares dates without accounting for timezone differences.history Changelog
Sonstiges
- Frontend-Tests repariert: 128 von 140 fehlgeschlagenen Testdateien behoben, Vitest-Konfiguration mit Path-Aliase und jsdom eingerichtet
- CI/CD-Pipeline: GitHub Actions für Backend (.NET 10) und Frontend (Angular 21) mit striktem Test-Modus
- GitHub-Repository initialisiert, Renovate für automatische Dependency-Updates konfiguriert
- Workflow-Dokumentation überarbeitet mit 6 Slash-Commands und Impact-Checkliste für jeden Plan
- Wireframe-Toolkit: Gemeinsame Basis-Library eliminiert ~500 Zeilen Duplikation pro Wireframe
- Status-Dashboard: Professionelle Projektübersicht unter status.dotslash-labs.com mit SSL
- Automatisierung: 3 wöchentliche Remote-Trigger (Montag 8 Uhr) — Drift Detection, Doc Freshness, Backlog Grooming
Features
- Gamification: Tägliche Streaks mit 48h-Pause-Regel, 41 Achievements in 6 Kategorien (4 Seltenheitsstufen), virtueller Pet-Avatar mit 7 Emotionszuständen, XP-System mit Level-Aufstieg
- Kalorien-Tracking: Vollständige RER/MER-Berechnung nach Rasse, Alter und Aktivitätslevel; Kalorien-Anzeige im Dashboard, in Mahlzeiten und Fütterungsplänen
- Fütterungspläne: Automatische Mahlzeiten-Erstellung bei Plan-Abschluss mit Kalorien-Berechnung (3-stufiger Fallback)
- Produktkatalog: 14.576 Tiernahrungsprodukte (9 Tierarten, 250 Marken) mit Volltextsuche und Autovervollständigung
- Walk Tracker mit Live-GPS: Vollbild-Karte, Echtzeit-Statistiken, 7 Event-Typen, Walk-Historie mit Monatsgruppierung, Heatmap-Ansicht
- Natives GPS-Plugin: Eigenes Capacitor-Plugin für Android (FusedLocationProvider + Foreground Service) und iOS (CLLocationManager), Kalman-Filter, Bewegungserkennung, adaptive Intervalle
- Onboarding: Mehrstufiger Willkommens-Flow mit Coachmark-Tour (3 Schritte), Quick-Win-Dialog und Betreuer-Einladung
- Google Login: Vollständige Integration auf Login, Registrierung und Gast-Upgrade (Web + Native)
- Pet Wizard: 5-Schritt-Assistent mit Rasse-Auswahl (283 Rassen), Kalorien-Vorschau und Avatar-Upload
- Geteilter Zugriff: 5 Rollen (Owner bis Viewer), Einladungs-Links mit Ablaufdatum, Deep Links für Android
- Kalender: Monats-, Wochen- und Listenansicht, 8 Event-Typen, Erinnerungen, Wiederkehrende Termine
- Dokumente: Foto-Galerie mit Vollbild-Lightbox (Zoom, Wisch-Navigation) und Datei-Manager mit 5 Kategorien
- Checklisten: To-Do-Listen pro Haustier mit Fortschrittsanzeige und Kategorien
- Gewichtsverlauf: SVG-Liniendiagramm mit Zeitraum-Filter, Delta-Badges für Trends
- Dashboard: Tagesübersicht mit Begrüßung, Schnellaktionen, Aktivitäts-Streak, nächste Fütterung, Zusammenfassung
- Gast-Modus: Spielerischer Gastname-Generator, In-App-Upgrade auf vollwertigen Account
- Profil & Einstellungen: Avatar-Upload, Sprache (DE/EN), Theme (System/Hell/Dunkel), Benachrichtigungen
- Dark Mode: Neutrale Oberflächen ohne Grünstich, klare Elevation-Hierarchie
- Hilfe & FAQ: 9 interaktive Kategorien mit Echtzeit-Suche und Accordion-Navigation
- In-App Updates: Natives Plugin für Android (Play In-App Updates) und iOS (iTunes Lookup)
- Danger Zone: Haustier löschen mit Bestätigungsdialog (nur für Besitzer)
- Internationalisierung: Vollständige DE/EN-Übersetzung aller Features
Bugfixes
- Session-Stabilität: Token-Refresh nur bei 401/403 (nicht bei Netzwerkfehlern), Race-Condition zwischen Facade und Interceptor behoben, 30s Clock-Skew-Toleranz
- Safe-Area-Insets: Native CSS-Variablen-Injektion auf Android für Geräte mit On-Screen-Navigation
- GPS-Datenverlust beim Beenden: Signal-Feedback-Loop in der Walk-Tracker-Seite behoben
- Kalender UTC-Bugs: Tages-Zuordnung und Navigation auf Date.UTC umgestellt
- Rasse-Anzeige: Race-Condition bei lazy-loaded Übersetzungen mit reaktivem Trigger behoben
- Nächste-Fütterung-Badge: Lesbare Zeitanzeige statt roher Minuten ("in 11 Std. 31 Min.")
- Foto/Datei-Upload auf Mobilgeräten: Blob-zu-File-Konvertierung für Android WebView
- Pet Wizard: Datums-Validierung, Locale-Format und optionales Geburtsdatum
- Fütterungsplan: Produkt-Erstellung schließt nicht mehr den übergeordneten Dialog
- Formular-Validierung: Doppelklick-Schutz in allen Formularen, Locale-abhängige Datumsformate
Sonstiges
- Swipe-to-Close für alle 16 Bottom Sheets mit Scroll-Erkennung und Pointer-Handling
- 5 generische Formular-Komponenten (Input, Date, Time, Select, ChipSelect) — 33 Felder migriert
- Gemeinsame Action-Sheet-Komponente ersetzt individuelle Implementierungen
- Button-CSS-Tokens und globale Utility-Klassen (.pw-btn-primary, .pw-btn-secondary, etc.)
- Kompakte Tabellen-Darstellung im Mahlzeiten-Formular mit Spaltenüberschriften
- Einheiten-Anzeige pro Produkt im Mahlzeiten-Formular (g/ml/Stk)
- Pet-Avatar-URL-Auflösung mit Backend-Origin
- StatusBar-Anpassung an Hell/Dunkel-Theme
- Wireframes für alle neuen Features erstellt
- Hardware-Zurück-Taste: Prioritätsbasiertes Handler-System für Android
Bugfixes
- Übersetzungen laden jetzt korrekt, ohne vom Auth-Interceptor blockiert zu werden
- Tastatur-Viewport-Reset beim Fortsetzen der App aus dem Hintergrund (Android)
Features
- Anmeldung und Registrierung mit JWT-Authentifizierung
- Haustier-Verwaltung mit Profil, Avatar und Stammdaten
- Fütterungsverwaltung mit Mahlzeiten-Erfassung
- Spaziergang-Übersicht und -Aufzeichnung
- Training mit Übungen und Erfolgsbewertung
- Kalender für Tierarzttermine und Erinnerungen
- Dokumenten-Verwaltung mit Foto-Upload
- Checklisten pro Haustier
- Dashboard mit Tagesübersicht
- Internationalisierung (Deutsch/Englisch)
- Google OAuth auf der Login-Seite
- Einstellungen: Sprache, Theme, Benachrichtigungen
- Profil-Seite mit Avatar und Account-Verwaltung
Sonstiges
- Angular 21 + Ionic 8 + Capacitor 8 Frontend
- .NET 10 Backend mit Clean Architecture
- PostgreSQL mit Entity Framework Core
- Docker-Setup für Backend
- Projektdokumentation: Definition, Architektur, Limitierungen, UI-Struktur, Backlog
bug_report Open Bugs
Resolved
devices Wireframes
Interaktive Wireframes aller App-Screens. Klicke auf einen Eintrag um das Wireframe zu öffnen.
monitoring Cron-Reports
Cron-Jobs werden in Phase D eingerichtet.
Reports erscheinen hier automatisch.