dashboard Project Overview

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

Current Work

  • PLAN_BUG04_frontend-form-validation.md — BUG04 frontend form validation
  • PLAN_F07_push-notifications.md — F07 push notifications
  • PLAN_F08_offline-support.md — F08 offline support
  • PLAN_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.

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.

route Roadmap

Low Priority (Post-MVP)

B06 Feature
Push Notifications
FCM + Capacitor Push Notifications + backend scheduler
B07 Feature
Offline Support
Read cache + write queue sync
B11 Feature
Subscription / PayPal
Guest session done (F13). Free / Premium tiers + PayPal still open.
B40 Feature
Meal form: per-item FeedType selector
Each food item should have its own FeedType (Dry/Wet/Raw/Treat) for accurate calorie auto-estimation. Currently hardcoded to DryFood. See L23.
B41 Feature
Calorie calculation for other species
Extend RER/MER formula to rabbits, birds, hamsters, etc. Currently dogs and cats only. See L24.
B42 Feature
Pregnancy phase calorie adjustment
Optional 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.
B43 Feature
Ideal weight calculation (Plan B)
Breed-specific ideal weight ranges, Body Condition Score (BCS), weight-based calorie adjustment. Uses HeightCm field already collected in F11.
B47 Feature
Unit-aware calorie computation
Calorie calculation should work for all units (g, ml, Stk, future units), not just grams. Needs: 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.
B45 Feature
Produktdetailseite
Nährwerte, Zusammensetzung, Fütterungsempfehlung etc. aus GlobalFoodProduct.RawData anzeigen.
B46 Feature
User: Produkte vorschlagen + Bilder einreichen
User können fehlende Produkte melden und Bilder zu Produkten hochladen. Moderations-Workflow nötig.
B19 Feature
Diskussion: Training & Feeding als Stammdaten
Klären ob Training-Typen und Feeding-Typen/-Pläne als Stammdaten (vordefiniert/verwaltbar) statt als manuelle Freitexteinträge umgesetzt werden sollen. Betrifft Datenmodell, Dateneingabe und ggf. Kalenderlogik.
B22 Feature
Android notification: event action buttons
Android foreground notification during walk should have quick-action buttons (Pee/Poop/Mark). Requires custom BroadcastReceiver — beyond Capacitor scope. Deferred from F12.
B24 Feature
Walk photo: TakenAt timestamp
WalkPhoto entity only stores upload time (CreatedAt from BaseEntity). Add TakenAt field (photo capture time) for future timeline / map-pin features. Deferred from F12 (R11).
B25 Feature
Walk history: pagination / infinite scroll
Walk history loads up to 100 walks on init with no progressive loading. Add server-side pagination or infinite scroll for users with many walks. Deferred from F12 (R14).
B28 Feature
Guest account cleanup job
Abandoned guest accounts (never upgraded) accumulate in the DB indefinitely. Add a scheduled backend job that deletes guest accounts (IsGuest = true) older than 30 days along with all their associated data (Pets, Feedings, Walks, etc.).
B30 Feature
PetAccess: E-Mail-Einladungen
Einladungslink per E-Mail versenden (MailKit + SMTP). Folge-Feature zu F10 — F10 implementiert nur kopierbaren Link. Erfordert SMTP-Konfiguration + Human-Freigabe für MailKit-Paket.
B31 Feature
PetAccess: Push-Notification bei Ablauf
User erhält Push-Notification wenn temporärer Zugang in <24h abläuft. Abhängig von F07 (Push Notifications).
B32 Feature
Username-Handle (Option C)
Eigener Username-Handle (@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.
B33 Feature
GPS: GNSS Raw Measurements (Android)
Tap into GNSS raw measurements (Android 7+) for carrier-phase positioning — enables sub-meter accuracy on newer devices. Extends NativeGps plugin with GnssStatus.Callback + GnssMeasurementsEvent. iOS: not available.
B34 Feature
GPS: Heading/Bearing Validation
Use magnetometer/compass data to validate GPS direction. Reject GPS points that show implausible direction changes (e.g. 180° jump while compass says straight ahead). Reduces route "zacken". Extends NativeGps plugin on both platforms.
B35 Feature
GPS: Satellite Count Monitoring
Track number of visible GPS satellites as quality signal. GnssStatus.Callback on Android. < 4 satellites → flag fix as unreliable, raise accuracy threshold dynamically. iOS: not directly available — skip or approximate from horizontalAccuracy trend.
B38 Feature
Home Screen Widgets (iOS / Android)
Native Widgets für den Homescreen wie im Wireframe definiert (z.B. nächste Fütterung, Walk-Status, Streak). Erfordert native Implementierung: Android (Glance/AppWidget), iOS (WidgetKit). Kommunikation mit der App via Shared Storage / App Groups.
B48 Feature
Weekly Recap
Sonntag-Abend Popup mit Wochen-Zusammenfassung (Walks, Fütterungen, Training, Streak, neue Badges). Abschaltbar in Settings. Konzept definiert in docs/konzepte/17-gamification.md Section 5. Deferred from F27.
B36 Feature
Account-Löschung: 14-Tage-Gnadenfrist
Statt sofortiger Löschung: Account als "zum Löschen vorgemerkt" markieren (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.ä.).
B49 Feature
Guest: Upgrade-Nudge vor Token-Ablauf
Guest-User aktiv auffordern, ein Konto zu erstellen, wenn ihr Refresh Token in <7 Tagen abläuft. In-App-Banner oder Dialog mit Hinweis "Deine Daten sind nur noch X Tage gesichert". Benötigt: Token-Expiry im Frontend auswerten oder Backend-Endpoint für verbleibende Session-Dauer.
B50 Feature
Guest: Device-basierte Session-Recovery
Guest-Account an Capacitor Device-ID koppeln. Bei erneutem Guest-Login vom selben Gerät wird der alte Account wiederhergestellt statt einen neuen zu erstellen. Benötigt: DeviceId-Feld auf ApplicationUser, Capacitor Device Plugin, Backend-Logik für Device-Matching.

Technical Debt / Housekeeping

T01 Tech
E2E tests
Playwright or Cypress for critical user flows
T03 Tech
API documentation
Swagger/OpenAPI properly set up
T08 Tech
Papierkorb: 30-Tage-Cleanup für gelöschte Dokumente
Soft-deleted docs with DeletedAt need UI (restore/purge) + background cleanup job
T20 Tech
Swipe-to-delete for list entries
Replace visible delete buttons on feeding/training list entries with swipe-to-delete gesture. Cleaner mobile UX.
T32 Tech
Walk GPS location batching
Location points are sent to backend individually on every GPS position update (every ~5m). Should batch and flush every 10–15 seconds to reduce network traffic and battery drain.
T34 Tech
Calendar: periodLabel week-end uses local setDate/getDate on UTC-midnight Date
periodLabel 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.
T36 Tech
Fix 81 failing frontend-v2 tests
Tests fail due to missing imports/components from B12 migration. Must fix to make CI tests strict (remove continue-on-error from .github/workflows/ci.yml).
T37 Tech
Move large seed file to Git LFS
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.
T38 Tech
Replace capacitor-google-auth package
@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.
T39 Tech
Fix flaky app.spec.ts Capacitor mock isolation
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.
T40 Tech
Fix timezone-dependent StreakService test in CI
StreakServiceTests.RecordVisitAsync_SameDay_NoOp fails in CI (UTC) but passes locally (CET). Test likely compares dates without accounting for timezone differences.

history Changelog

Unreleased Aktuelle Entwicklung
expand_more

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
v2.0.0 28.03.2026
expand_more

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

bug_report Open Bugs

BUG03 Open Medium
Pet creation form missing frontend validation (parity with backend)

Resolved

BUG01 Fixed High
Safe Area Insets not applied on Android
BUG02 Fixed High
File uploads not served (avatars, documents, walk photos)

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-03-29 — PetWatch Project Dashboard v1.0