Files
Rbm.FamStack/docs/ROADMAP.md
T
2026-10-09 18:54:02 +02:00

7.1 KiB
Raw Blame History

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 AppDbContext mit 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 sa fü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)