Zurück zu den Projekten

Hausheld

Workflow-Plattform für die mobile Pflege in NRW — Planung, GPS-verifizierter Check-in/out, digitale Signaturen, Entlastungsbetrag-Tracking. Mit Fokus auf Datenintegrität und EU/DSGVO.

Hausheld admin dashboard preview
Admin-Dashboard: Kalender, Mitarbeiter, Karte und KPIs.
Hausheld worker app preview
Mitarbeiter-PWA: Plan und GPS-Check-in/out.

Herausforderung

Ein Pflegedienst mit 200 Mitarbeitern in NRW arbeitete mit manuellen Papierplänen, Nachweisen auf Papier und strengen regulatorischen Anforderungen (DSGVO, SGB XI) für Stammdaten und Abrechnung.

Vorgehen

Ein verteiltes Ökosystem: ein FastAPI-Backend (PostgreSQL + PostGIS), eine Next.js-PWA für Mitarbeiter im Einsatz (Plan, GPS-Check-in/out, Kundensignatur) und ein Vite+React-Admin-Dashboard mit Navigation nur über Sidebar: Kalender, Mitarbeiter, Klienten, Karten-Seite (Heatmap + Mitarbeiter-Pins, Mapbox + Deck.gl), Recharts-Analytics, Budget-Warnungen, SGB-XI-CSV-Export, Audit-Log. PostGIS liefert distanzbasierte Vertretungsvorschläge; ein strikter Schicht-Zustandsautomat und ein nur anhängendes Audit-Log unterstützen die Compliance.

  • Backend: Single Source of Truth. FastAPI, SQLAlchemy 2 (async), PostgreSQL + PostGIS, Alembic. Erzwingt RBAC, verschlüsselt Gesundheitsdaten, schreibt ins Audit-Log; Geo-Heatmap- und Dashboard-Stats-APIs.
  • Mobile: Next.js-PWA (deutsche UI). Plan, Check-in/out, Signaturfeld, Klientenliste für zugewiesene Schichten.
  • Admin: Vite + React. Dashboard (KPIs + Recharts-Analytics), Kalender (FullCalendar), Mitarbeiter & Krankmeldungen, Klienten & Budget-Warnungen, Karte (Heatmap + Mitarbeiter-Pins, Mapbox + Deck.gl), Abrechnungsexport, Audit-Log, Vertretungszuweisung. Navigation nur über Sidebar.

Datenfluss ist unidirektional: Frontends rufen nur die API auf; kein direkter DB-Zugriff vom Client.

Ergebnis

Papierbasierte Planung wurde durch einen Mobile-first Workflow ersetzt: GPS-verifizierter Check-in/out, digitale Signaturen, Echtzeit-Koordination und audit-sichere Leistungsnachweise. Admins erhalten Überblick über Dashboard, Karten und Warnungen — weniger Bürokratie, mehr Zeit für Pflege.

Technische Details

Funktionen

  • Mobile PWA: Mitarbeiter sehen ihren Plan, Check-in/out mit GPS, Kundensignatur (Leistungsnachweis).
  • Admin dashboard: Kalender, Mitarbeiter, Klienten, Karte (Heatmap + Mitarbeiter-Pins), Abrechnung, Audit-Log — alles über Sidebar; Dashboard mit KPIs und Recharts-Analytics.
  • Geo map: Karten-Seite: Schichtdichte-Heatmap und Mitarbeiter-Standorte (Mapbox + Deck.gl); Daten aus Demo-Seed.
  • Substitution engine: Bis zu 3 Vertreter nach Entfernung (PostGIS) und wöchentlicher Kapazität.
  • Budget & billing: Monatsbudget pro Klient, 15%-Warnschwelle, CSV-Export für Kostenträger (SGB XI).
  • Audit trail: Nur anhängendes Log jedes Zugriffs auf Klienten- (bzw. Gesundheits-)Daten; lesendes API.

Tech-Stack

PathStack
/backendFastAPI, PostgreSQL, PostGIS, SQLAlchemy 2, Alembic, Pydantic — API, Auth, Geo-Heatmap, Dashboard-Stats, Vertretungen, Budget, Audit, SGB-XI-Export
/frontendNext.js, Tailwind, PWA — Mobile Mitarbeiter-App
/adminVite, React, Tailwind, FullCalendar, Recharts, Mapbox, Deck.gl — Desktop-Admin; Premium-Analytics und Karte

Geodaten & Vertretung

PostgreSQL/PostGIS liefert distanzbasierte Vertretungsvorschläge, wenn eine Schicht unbesetzt ist (z. B. Krankmeldung). Die Admin-Karte nutzt die Geo-API (v1) für Heatmap und Mitarbeiter-Pins.

  • Worker- und Client-Modelle speichern einen PostGIS-Punkt (WGS84): current_location und address_location.
  • Endpoint: GET /shifts/{id}/suggest-substitutes (nur Admin). Sortierung nach ST_Distance (Klient ↔ Mitarbeiter), Ausschluss überlappender Schichten und über Kapazität.
  • Ergebnis: Bis zu 3 Mitarbeiter mit Entfernung (m) und verbleibender Kapazität; Admin weist mit einem Klick zu.
  • GET /api/v1/geo/heatmap — GeoJSON FeatureCollection für Schichtdichte-Heatmap; Mitarbeiter mit current_location als Pins über GET /workers.

DSGVO & Compliance

MeasureImplementation
Health data encryptionFernet (AES) für Versicherungsnummer und Pflegegrad; Schlüssel über ENCRYPTION_KEY (nicht in der DB).
Audit logNur anhängendes audit_logs: user, action, target, timestamp. Lesendes API — keine Manipulation.
Soft deletesMitarbeiter, Klienten, Schichten: nur deleted_at gesetzt; Zeilen für Audit/legal hold erhalten.
Data residencyAusgelegt für AWS eu-central-1 (Frankfurt); Gesundheitsdaten bleiben in Deutschland.

Vollständige Erklärung: DSGVO-Compliance-Statement

Schicht-Workflow

Schichten folgen einem strikten Zustandsautomaten; GPS und Signaturen liefern nachweisbaren Leistungsnachweis.

StatusMeaning
ScheduledMitarbeiter zugewiesen; noch nicht begonnen.
In_ProgressMitarbeiter hat eingecheckt (GPS + Zeitstempel gespeichert).
CompletedMitarbeiter hat ausgecheckt (GPS + Kundensignatur); Kosten für Budgetabzug gesetzt.
UnassignedKein Mitarbeiter (z. B. krank); Admin kann suggest-substitutes nutzen und zuweisen.
CancelledSchicht nicht durchgeführt.

Scheduled → (Check-in) → In_Progress → (Check-out + Signatur) → Completed. GPS-verifizierter Check-in/out ersetzt Papiernachweise für Kostenträger und Audits.

API-Referenz

AreaEndpoints
AuthAuth: POST /auth/dev-login, GET /auth/me
Geo (v1)Geo (v1): GET /api/v1/geo/heatmap (GeoJSON für Karten-Heatmap)
Stats (v1)Stats (v1): GET /api/v1/stats/dashboard-summary (Wochentrends, Stadtverteilung, KPIs, Top-Mitarbeiter)
ShiftsShifts: GET/PATCH /shifts, check-in, check-out, GET /shifts/{id}/suggest-substitutes
WorkersWorkers: GET /workers, POST /workers/{id}/sick-leave
ClientsClients: GET /clients, budget-status, budget-alerts
BillingBilling: GET /exports/billing?month= (SGB-XI-CSV)
AuditAudit: GET /audit-logs (Admin, read-only)
Dieses Projekt dient Portfolio- und Lehrzwecken. Produktive Nutzung erfordert rechtliche, datenschutzrechtliche und versicherungstechnische Beratung.