JannisandCopilot 18a0a06e06 feat: add task API with approval, points, live updates and web push
Minimal API slice /api/tasks (idempotent create with client ids, versioned updates, state-based status changes, checklist, parent approval/rejection, points overview and audited adjustments, recurring next instance), per-user SignalR broadcasts that respect private tasks, /api/push subscription endpoints, a dependency-free Web Push sender (RFC 8291/8292) and a minimal reminder service. VAPID keys via Aspire parameters and deploy/.env (tools/generate-vapid-keys.cs); integration test login limit raised.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-09 21:58:10 +02:00

Familienplaner

Digitaler Familienplaner als Progressive Web App: Einkaufsliste, Essenplan, Aufgaben & Ämtchen, Familienkalender (inkl. Abo für iPhone/Outlook) und Chat – für Smartphone, Tablet und Desktop.

Status: Phasen 1–4 sind umgesetzt: Login, Rollenmatrix, Benutzerverwaltung, Familieneinstellungen, Audit-Log, Einkaufslisten (Echtzeit, offline nutzbar), Essenplan (Wochenraster, Wünsche der Kinder, Zutaten auf die Einkaufsliste), PWA-Grundgerüst, Aspire- und Docker-Betrieb. Die Fachfunktionen folgen phasenweise, siehe docs/ROADMAP.md.

Voraussetzungen (Entwicklung)

  • .NET SDK 10 (getestet mit 10.0.300)
  • Docker Desktop bzw. Docker Engine (für SQL Server)
  • optional: Aspire CLI (aspire run)

Entwicklung

dotnet tool restore
aspire run          # oder: dotnet run --project src/FamilyPlanner.AppHost

Das Aspire-Dashboard öffnet sich automatisch (Login-Link steht in der Konsole). Die App läuft unter https://localhost:7264. Beim ersten Start wird der SQL-Server-Container mit persistentem Volume angelegt, der MigrationService migriert die Datenbank und legt den Initial-Admin an:

Benutzer Passwort Hinweis
admin Admin123!ChangeMe nur lokal (src/FamilyPlanner.AppHost/appsettings.Development.json), muss beim ersten Login geändert werden

Das Passwort lässt sich per User Secrets überschreiben: dotnet user-secrets set "Parameters:seed-admin-password" "..." --project src/FamilyPlanner.AppHost.

Tests

dotnet build FamilyPlanner.slnx
dotnet test --solution FamilyPlanner.slnx   # Integrationstests benötigen Docker

Produktivbetrieb (Docker Compose)

cd deploy
cp .env.example .env          # Passwörter und Domain anpassen
docker compose up -d --build  # ohne Reverse Proxy, Web auf 127.0.0.1:8080
# oder mit automatischem HTTPS (Caddy + Let's Encrypt, Ports 80/443):
docker compose --profile proxy up -d --build

Die App benötigt HTTPS (sichere Cookies). Ohne Caddy funktioniert der Login nur über http://localhost oder hinter einem eigenen Reverse Proxy mit TLS.

Konfiguration (deploy/.env)

Variable Bedeutung
SQL_SA_PASSWORD Passwort des SQL-Server-Administrators (komplex, min. 8 Zeichen)
MSSQL_PID SQL-Server-Edition (Express = kostenlos)
ADMIN_USERNAME, ADMIN_PASSWORD, ADMIN_EMAIL Initial-Admin, nur beim allerersten Start; Passwortwechsel wird erzwungen
FAMILY_NAME Familienname (Vorbelegung der Familieneinstellungen beim ersten Start)
WEB_BIND, WEB_PORT Host-Bindung des Web-Containers ohne Caddy
DOMAIN Domain für Caddy/Let's Encrypt (Profil proxy)
REGISTRY, TAG optionales Image-Präfix und Tag

Weitere Einstellungen (alle Dienste) folgen der ASP.NET-Core-Konvention Abschnitt__Schlüssel, z. B. RateLimiting__LoginPermitLimit=10 (Api) oder Features__PinLogin=true (Api, schaltet den vorbereiteten PIN-Login für Kinder frei).

Benutzer, Familieneinstellungen (Familienname, Zeitzone, Essenplan, Mahlzeiten, Aufgaben-Kategorien, Punktesystem, Gast-Rechte) und das Protokoll administrativer Aktionen verwaltet der Administrator in der App unter Verwaltung.

Update

cd deploy
git pull
docker compose up -d --build   # Migrationen laufen automatisch über den migrations-Container

Backup & Restore

cd deploy
./scripts/backup.sh                                        # schreibt backups/familyplanner-<datum>.bak
./scripts/restore.sh backups/familyplanner-20261009-120000.bak

Backups liegen zusätzlich im Docker-Volume sql-backup (14 Tage). Für eine regelmäßige Sicherung z. B. per Cron: 0 3 * * * cd /opt/familyplanner/deploy && ./scripts/backup.sh.

Kalender-Abos (iPhone/Outlook)

Folgt in Phase 6 (ICS-Feed mit geheimem Abo-Link, siehe ADR-0005).

S
Description
No description provided
Readme
1.7 MiB
0 Stars 1 Watchers 0 Forks
Languages
C# 80.7%
HTML 17.5%
CSS 1.1%
JavaScript 0.5%