7.1 KiB
7.1 KiB
Roadmap
Legende: [x] erledigt, [ ] offen. Nach jeder Phase: Build ohne Warnungen, Tests grün, Start über Aspire, Commit.
Phase 1 – Fundament
- Solution (
FamilyPlanner.slnx), alle Projekte laut Architektur inkl. MigrationService Directory.Build.props(Nullable, TreatWarningsAsErrors),Directory.Packages.props,.editorconfig,global.json,.gitignore- Aspire AppHost: SQL Server mit persistentem Volume, Datenbank-Ressource, MigrationService, Api, Web (
WithReference,WaitFor,WaitForCompletion) - ServiceDefaults: OpenTelemetry,
/health,/alive, Resilience, Service Discovery - EF Core
AppDbContextmit Identity,AuditableEntity, Soft Delete, Audit-Interceptor, Initial-Migration - Data Protection Keys in der Datenbank
- Seeding: Rollen Admin/Familie/Kind/Gast, Initial-Admin aus Konfiguration mit erzwungener Passwortänderung, Familieneinstellungen
- Auth-API: Login (Benutzername/E-Mail, Angemeldet bleiben), Logout, Me, Passwort ändern; Lockout; Rate Limiting; CSRF-Header
- Web-Host als BFF mit YARP (
/api,/hubs,/ics) - Blazor-Shell mit MudBlazor: Login, Passwortwechsel, Navigation (Drawer + Bottom-Navigation), Platzhalterseiten, Dark Mode, deutsche Texte
- PWA-Grundgerüst: Manifest, Icons, Service Worker, Offline-Hinweis
- Docker: Container-Images (non-root),
deploy/docker-compose.yml,deploy/.env.example, Aspire-Docker-Compose-Publishing - Backup-/Restore-Skripte (erste Version), README (erste Version)
- Tests: Unit (Rollen/Policies/Domain/Interceptor), Integration (Login-Flow über Aspire.Hosting.Testing), bUnit (Login-Seite)
- CI-Pipeline (GitHub Actions)
Phase 2 – Rollen & Admin
- Rollenmatrix vollständig als
PermissionMatrix(Full/Restricted/None) + Permission-Policies, Unit-Test je Matrixzelle (ADR-0008) - Konfigurierbare Ausnahmen: Gäste dürfen Einkaufsliste bearbeiten / Familienchat nutzen (wirken sofort auf Policies und
/me) - Fallback-Policy prüft zusätzlich das Ablaufdatum (Claim) – abgelaufene Gäste verlieren sofort den Zugriff
- Benutzerverwaltung (Api + UI): anlegen, bearbeiten, deaktivieren, löschen (Soft Delete mit Anonymisierung), Rolle, Anzeigename, Farbe
- Profilbild-Upload (PNG/JPEG/WebP ≤ 1 MB, Signaturprüfung, in der DB, ADR-0009)
- Passwort-Reset durch Admin (erzwungene Änderung), Konto entsperren, Gast-Ablaufdatum (Login danach verweigert)
- Schutz „letzter aktiver Admin“ (löschen/deaktivieren/herabstufen/ablaufen → 409)
- Sitzungen werden bei Rollen-/Status-Änderung über den Security Stamp ungültig (≤ 5 min)
- Allgemeine Einstellungen als Entität + Admin-Seite (Familienname, Zeitzone, Essenplan-Zeitraum, Mahlzeiten, Aufgaben-Kategorien, Punktesystem, Eltern-Bestätigung, Gast-Rechte)
- Audit-Log für alle administrativen Aktionen (inkl. Änderungsdetails) + Admin-Ansicht mit Paging
- Benutzerverzeichnis
/api/users(Namen, Farben, Avatare für spätere Zuweisungen) - Validierung mit FluentValidation (gemeinsame Validatoren für Api und Client), Migration
Phase2AdminAndSettings - PIN-Login für Kinder vorbereitet: PIN setzen/entfernen (nur Kinder), Endpoint hinter
Features:PinLogin(ADR-0010) - Tests: Unit (Matrix, Policies, Last-Admin, Validatoren, Avatar-Prüfung), Integration (Admin-Endpunkte, 403 für Nicht-Admins, Gast-Ablauf, Lockout, Audit), bUnit (Benutzerliste, Dialog)
Phase 3 – Einkaufsliste
- Mehrere Listen, Standardliste
- Schnellerfassung mit Mengen-Parser („2x Milch“, „500 g Mehl“) + Unit-Tests
- Abhaken, Entfernen (Wischgeste/Button), „Erledigte entfernen“
- Autovervollständigung aus häufig gekauften Artikeln
- Kategorien/Gänge zur Sortierung
- Rechte: Kind löscht nur eigene, Gast lesend (konfigurierbar)
- SignalR-Live-Updates, Optimistic Concurrency
- Offline-Outbox (IndexedDB) + Hintergrundsynchronisation
Phase 4 – Essenplaner
- Zeitraum 7–10 Tage (konfigurierbar), Mahlzeiten konfigurierbar
- Mobile Liste / Desktop-Wochenraster
- Freitext + Autovervollständigung, Notiz, Rezeptlink, Zutaten
- „Zutaten auf Einkaufsliste“
- Essenswünsche von Kindern, Übernahme durch Familie/Admin
- Drag & Drop auf anderen Tag
Phase 5 – Aufgaben
- Schnellerfassung + ausklappbare Details, alle Felder laut Anforderung
- Status offen/in Arbeit/erledigt, Verlauf (wer/wann)
- Zuweisung an Personen / ganze Familie, private Aufgaben
- Wiederholungen (RRULE), nächste Instanz nach Erledigung/Stichtag + Unit-Tests
- Ämtchen mit Punkten, Eltern-Bestätigung, Punktestand, Kinderansicht
- Ansichten Meine/Familie/Nach Person/Überfällig/Diese Woche, Filter, Sortierung
- Live-Updates, Offline-Erfassung
- Web-Push-Erinnerungen vorbereiten (VAPID, Subscriptions)
Phase 6 – Kalender
- Kalender + Berechtigungen pro Rolle/Benutzer, Kalenderverwaltung
- Termine mit Personen-Tags, ganztägig, Ort, Notiz
- Wiederholungen (RRULE) + Ausnahmen (EXDATE/Overrides)
- Ansichten Tag/Woche/Monat/Agenda, Farben je Person, Filter
- Aufgaben-Ebene im Kalender (ein-/ausblendbar)
- ICS-Feeds (alle/meine/pro Kalender, optional Aufgaben als VTODO/ganztägig), VTIMEZONE Europe/Berlin, stabile UIDs, ETag/Last-Modified + Unit-Tests
- Feed-Token erzeugen/widerrufen, Seite „Kalender abonnieren“ mit QR-Code und Anleitungen (iPhone, Outlook)
- ICS-Import
- ADR CalDAV / Microsoft Graph
Phase 7 – Dashboard
- Kacheln: Heute zu essen, Termine heute + morgen, Einkaufsliste (Anzahl + Schnellerfassung), Meine Aufgaben, Familien-/Kinderaufgaben (Eltern), ungelesene Nachrichten
- Begrüßung mit Datum, einspaltig auf dem Smartphone
- Live-Aktualisierung
Phase 8 – Chat
- Familienchat + Direktnachrichten
- Gelesen-Status, Ungelesen-Zähler, Tippindikator
- Paging
- Bilder (Größenlimit, Validierung), Emoji-Reaktionen
- Rechte Kind/Gast
Phase 9 – Härtung
- Content-Security-Policy (Basis-Header X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, HSTS sind seit Phase 1 aktiv)
- Eigener SQL-Login mit minimalen Rechten statt
safür Api/MigrationService - Service-Worker-Cache-Version automatisch beim Build setzen
- Rate Limiting vervollständigen
- Tests vervollständigen (Policies, ICS, Wiederholungen, Integration)
- Barrierefreiheit (WCAG 2.1 AA), Performance (AOT/Trimming prüfen, Lazy Loading)
Phase 10 – Deployment
- Finale
docker-compose.yml(inkl. optionalem Caddy),.env.example - Backup-/Restore-Skripte
- README: Voraussetzungen, Entwicklung, Konfiguration, Deployment, Update, Backup/Restore, Kalender-Abos
Backlog
- PIN-Login-Oberfläche für ein Familien-Tablet (Profilauswahl + Ziffernblock) – Api ist vorbereitet
- Selbst-Upload des eigenen Profilbilds, Profilseite für Anzeigename/Farbe
- Endgültige Löschung eines Benutzers (DSGVO) zusätzlich zum Soft Delete
- Belohnungskatalog für Ämtchen-Punkte
- Web-Push für Termine und Chat
- CalDAV-Server bzw. Microsoft-Graph-Synchronisation
- Rezeptdatenbank
- Geburtstage und Jahrestage
- Wand-Tablet-Modus (Kiosk-Dashboard)