Architektur¶
Technologie-Stack¶
| Komponente | Technologie |
|---|---|
| Framework | Flutter (Dart) |
| State Management | Provider (ChangeNotifier), spezialisierte Sub-Provider |
| Verschluesselung | AES-256-GCM (cryptography), PBKDF2 100k Iterationen |
| Cloud-Sync | WebDAV (HiDrive, Nextcloud, eigener Server) via CloudStorageAdapter |
| Chat | Matrix-Protokoll (Conduit Server, Rust), E2E Megolm |
| Lokaler Speicher | Flutter Secure Storage, SharedPreferences |
| PDF-Generierung | pdf, Syncfusion Flutter PDF |
| Kalender | Syncfusion Flutter Calendar |
| QR-Codes | mobile_scanner (Scan), qr_flutter (Generierung) |
| Authentifizierung | local_auth (Biometrie), TOTP 2FA (RFC 6238), Session-Timeout |
| Audit | Persistenter JSON-Lines Logger (AuditLogger) |
Verzeichnisstruktur¶
lib/
├── main.dart # App-Einstiegspunkt
├── config/
│ └── developer_mode.dart # Build-Parameter Sicherheit
├── models/ # Datenmodelle (JSON-Serialisierung)
│ ├── app_settings.dart # Globale Konfiguration + UserRole
│ ├── client.dart # Klientenstammblatt
│ ├── appointment.dart # Termine
│ ├── arbeitszeit.dart # Arbeitszeit-Eintraege
│ ├── mitarbeiter.dart # Mitarbeiter
│ ├── team.dart # Teams (Multi-Team)
│ ├── message.dart # Nachrichten
│ ├── informationsbericht.dart # Berliner Formular 101
│ ├── freizeit_antrag.dart # Urlaubs-/Freizeitantraege
│ ├── fahrweg.dart # Fahrtstrecken
│ ├── tib_ziel.dart # Teilhabeziele (TIB)
│ ├── standort.dart # Standorte
│ └── ... # Weitere Modelle
├── providers/
│ ├── app_provider.dart # Zentraler App-State (Fassade)
│ ├── auth_provider.dart # Authentifizierung (spezialisiert)
│ ├── client_provider.dart # Klientenverwaltung (spezialisiert)
│ └── settings_provider.dart # Einstellungen (spezialisiert)
├── services/ # Business-Logik
│ ├── secure_storage_service.dart # Datenpersistenz (await Cloud-Ops)
│ ├── crypto_storage.dart # Verschluesselung (MEK/DEK, sichere Loeschung)
│ ├── hidrive_webdav_client.dart # HiDrive WebDAV-Client
│ ├── cloud_storage_adapter.dart # Abstraktionsschicht (HiDrive/Nextcloud/Lokal)
│ ├── matrix_chat_service.dart # Matrix-Chat (E2E, Raeume, Dateien)
│ ├── admin_service.dart # Admin-Operationen
│ ├── permission_service.dart # Rollenbasierte Zugriffskontrolle
│ ├── totp_service.dart # TOTP 2FA (RFC 6238)
│ ├── recovery_service.dart # Passwort-Recovery (Token + 12-Wort-Key)
│ ├── document_lock_service.dart # Dokument-Locking (Optimistic)
│ ├── audit_logger.dart # DSGVO Audit-Log (JSON-Lines)
│ ├── pdf_generator_service.dart # PDF-Export
│ ├── export_service.dart # CSV/JSON-Export
│ ├── gdpr_service.dart # DSGVO-Funktionen
│ ├── backup_service.dart # Backup/Restore
│ ├── team_key_service.dart # Team-Key-Verwaltung
│ ├── authentication_service.dart # Biometrische Auth
│ ├── security_service.dart # Geraetesicherheit
│ └── ... # Weitere Services
├── screens/ # UI-Screens
│ ├── home_screen.dart # Dashboard + Tab-Navigation
│ ├── auth_screen.dart # Anmeldung + TOTP
│ ├── setup_wizard_screen.dart # Ersteinrichtung
│ ├── admin/ # Admin-Screens
│ │ ├── admin_dashboard_screen.dart
│ │ ├── team_management_screen.dart
│ │ ├── employee_invitation_screen.dart
│ │ └── client_assignment_screen.dart
│ └── ... # 20+ weitere Screens
├── widgets/ # Wiederverwendbare UI-Komponenten
│ ├── adaptive_navigation.dart # Responsive Navigation
│ └── ...
└── utils/ # Hilfsfunktionen
├── responsive_utils.dart
├── platform_utils.dart
└── theme_config.dart
App-Start-Flow¶
main() → SecurityCheck → AppProvider.initialize()
→ AuthScreen (Biometrie/Passwort + optional TOTP)
→ SetupWizardScreen (falls Ersteinrichtung)
→ HomeScreen (Dashboard mit Tab-Navigation)
State Management¶
Ein zentraler AppProvider (ChangeNotifier) verwaltet:
- Authentifizierungsstatus
- App-Einstellungen
- Klienten, Termine, Arbeitszeiten, Mitarbeiter
- Lade- und Fehlerzustaende
- Cloud-Sync-Status
Daten werden in zwei Phasen geladen:
- Essentiell (blockiert UI): Storage-Init, Biometrie-Check, Settings
- Deferred (Hintergrund): Klienten, Termine, Mitarbeiter, Nachrichten
Responsive Design¶
Die App verwendet ResponsiveFramework mit folgenden Breakpoints:
| Breakpoint | Bereich | Navigation |
|---|---|---|
| Mobile | 0-450px | Bottom Navigation Bar (4 Tabs + Mehr) |
| Tablet | 451-800px | Navigation Drawer |
| Desktop | 801-1920px | Navigation Rail (links) |
| 4K | >1920px | Navigation Rail (erweitert) |