You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Das kannst du tun - mit eigenen Inhalten (Taschenhelfer) #13
Notwendige Designs für die Devs ausreichend definieren
Wert (Nutz-, Kunden- und Wissens-Wert) mit Stakeholder abstimmen
Größe (Aufwand, Komplexität) mit DEVs abstimmen
Quality Attribute Scenarios (QAS) abstimmen
Story
Als Feuerwehrmitglied möchte ich wissen, was ich nach außergewöhnlichen Belastungen tun kann und die Dinge um eigene Ideen ergänzen, um sie nach einer außergewöhnlichen Belastung umzusetzen. Außerdem möchte ich meine eigenen Vorsätze eintragen, um im Bedarfsfall erinnert zu werden.
@nemacke (& @tjorbo) Die Icons sind aktuell als jpgs mit weißem Hintergrund angelegt. Entweder wir geben die transparent als png aus oder direkt mit dem blauen Hintergrund und Rest außenrum transparent, weil der blaue Hintergrund einen Noise-Effekt hat. Dieser lässt sich nicht einfach durch Farbangabe reproduzieren.
Müsste dem im Content Repo aktualisiert werden.
@tjorbo bzgl Datenspeicherung:
secured_storage_flutter funktioniert von Haus aus ohne Biometrie, kann also jederzeit optional dazugeschaltet werden.
Ich würde dann jetzt für Tipps und Kontakte (und später Chats) drift einbauen und die DB mit sqlcipher_flutter_libs verschlüsseln wie es hier drin steht: https://drift.simonbinder.eu/platforms/encryption/
Den Schlüssel hinterlege ich dann im secure_storage_flutter, wo man später auch andere Keys und Tokens hinterlegen kann bei Bedarf.
Die unkritischen App-Einstellungen werden in shared_preferences hinterlegt.
Alle Daten werden lokal auf dem Gerät gespeichert.
Es findet in der aktuellen Implementierung keine Übertragung an Server/Cloud statt.
Biometrie wird nicht von der App gespeichert; die App nutzt nur die vom Betriebssystem bereitgestellte Authentifizierung.
Kategorien gespeicherter Daten
A) Vom Nutzer eingegebene Inhalte (verschlüsselt in der App-Datenbank)
Kontaktdaten Einsatznachsorgeteam
Teamname
Telefonnummer
E-Mail-Adresse
Persönliche Notizen zu den “7 Tipps”
Freitext pro Tipp (1–7), vom Nutzer eingegeben
Schutz
Speicherung erfolgt in einer verschlüsselten lokalen Datenbank (SQLCipher).
Zugriff ist nur innerhalb der App möglich.
B) Sicherheits-/Konfigurationsdaten (Secure Storage)
Verschlüsselungs-Schlüssel (technischer Key)
Zweck: Entschlüsselung der lokalen Datenbank
Wird nur lokal im sicheren Gerätespeicher abgelegt (Keychain/Keystore).
App-Lock Einstellung
Ob die optionale App-Sperre aktiviert ist (ja/nein)
Ebenfalls im sicheren Gerätespeicher.
C) Technischer Marker (SharedPreferences)
Ein Flag/Marker, ob es sich um den ersten App-Start nach Installation handelt
(nur zur technischen Initialisierung; keine Inhaltsdaten).
Biometrie / Face ID / Fingerprint
Die App nutzt die Systemfunktion zur Authentifizierung über local_auth.
Es werden keine biometrischen Daten von der App erhoben oder gespeichert.
Das Betriebssystem verarbeitet Biometriedaten innerhalb seiner Sicherheitsumgebung.
Löschkonzept
In der App gibt es “Alle Daten löschen”: entfernt die in Drift gespeicherten Inhalte (Kontaktdaten + Tipps/Notizen).
Bei Deinstallation werden DB-Dateien in der App-Sandbox entfernt; Secure-Storage Einträge können auf iOS ggf. bestehen bleiben (wird durch First-run Reset auf Default zurückgeführt).
Übersicht für Entwickler: Welche Speichertorte nutzen wir wofür?
1) Drift + SQLCipher (verschlüsselte lokale Datenbank)
Technik
Drift als ORM/Query-Layer
SQLite-Datei, die mit SQLCipher verschlüsselt wird (sqlcipher_flutter_libs + sqlite3 FFI)
DB wird beim App-Start initialisiert; SQLCipher wird via setupSqlCipher() aktiviert.
iOS: Keychain-Einträge können eine App-Deinstallation überleben (Simulator/Device-abhängig).
Deshalb nutzt ihr den “First-run reset” (Marker in SharedPreferences), um Defaults nach Neuinstallation wiederherzustellen.
3) local_auth (Biometrie/Device Credentials, kein persistenter Speicher)
Technik
Nur zur Authentifizierung (Face ID / Touch ID / Fingerprint / Geräte-PIN/Passcode, je nach Plattform)
Speichert selbst keine Daten, liefert nur “auth ok / nicht ok”.
Einsatz
App-Lock: bei App-Resume wird ein Overlay gezeigt und bei aktivierter Sperre authentifiziert.
4) shared_preferences (nur Marker für “First run”)
Technik
Unverschlüsselter Key-Value Store innerhalb der App-Sandbox.
Speichert aktuell
Installations-/First-run Marker, um nach Neuinstallation Keychain-Werte (z. B. App-Lock Flag) zurückzusetzen.
Activity
[-]Design: Das kannst du tun (mit eigenen Inhalten)[/-][+]Design: Das kannst du tun - mit eigenen Inhalten[/+][-]Design: Das kannst du tun - mit eigenen Inhalten[/-][+]Das kannst du tun - mit eigenen Inhalten[/+][-]Das kannst du tun - mit eigenen Inhalten[/-][+]Das kannst du tun - mit eigenen Inhalten (Taschenhelfer)[/+]19 remaining items
dennisprzytarski commentedon Jan 2, 2026
@nemacke (& @tjorbo) Die Icons sind aktuell als jpgs mit weißem Hintergrund angelegt. Entweder wir geben die transparent als png aus oder direkt mit dem blauen Hintergrund und Rest außenrum transparent, weil der blaue Hintergrund einen Noise-Effekt hat. Dieser lässt sich nicht einfach durch Farbangabe reproduzieren.
Müsste dem im Content Repo aktualisiert werden.
dennisprzytarski commentedon Jan 3, 2026
@tjorbo bzgl Datenspeicherung:
secured_storage_flutter funktioniert von Haus aus ohne Biometrie, kann also jederzeit optional dazugeschaltet werden.
Ich würde dann jetzt für Tipps und Kontakte (und später Chats) drift einbauen und die DB mit sqlcipher_flutter_libs verschlüsseln wie es hier drin steht: https://drift.simonbinder.eu/platforms/encryption/
Den Schlüssel hinterlege ich dann im secure_storage_flutter, wo man später auch andere Keys und Tokens hinterlegen kann bei Bedarf.
Die unkritischen App-Einstellungen werden in shared_preferences hinterlegt.
dennisprzytarski commentedon Jan 16, 2026
Link für mich: https://stackoverflow.com/questions/57933021/flutter-how-do-i-delete-fluttersecurestorage-items-during-install-uninstall
nemacke commentedon Jan 26, 2026
dennisprzytarski commentedon Feb 1, 2026
@tjorbo hier die Infos zur Speicherung:
Für PO: Welche Daten werden lokal verarbeitet?
Grundsatz
Kategorien gespeicherter Daten
A) Vom Nutzer eingegebene Inhalte (verschlüsselt in der App-Datenbank)
Kontaktdaten Einsatznachsorgeteam
Persönliche Notizen zu den “7 Tipps”
Schutz
B) Sicherheits-/Konfigurationsdaten (Secure Storage)
Verschlüsselungs-Schlüssel (technischer Key)
App-Lock Einstellung
C) Technischer Marker (SharedPreferences)
(nur zur technischen Initialisierung; keine Inhaltsdaten).
Biometrie / Face ID / Fingerprint
local_auth.Löschkonzept
Übersicht für Entwickler: Welche Speichertorte nutzen wir wofür?
1) Drift + SQLCipher (verschlüsselte lokale Datenbank)
Technik
sqlcipher_flutter_libs+sqlite3FFI)setupSqlCipher()aktiviert.Speichert aktuell
Wo liegt das?
Zugriff im Code
AppDatabase(global bereitgestellt via Provider)watchTeamContact(),upsertTeamContact(...),watchUserTipNote(position),upsertUserTipNote(position, note).2)
flutter_secure_storage(Keychain/Keystore)Technik
Speichert aktuell
Wichtiges Verhalten
Deshalb nutzt ihr den “First-run reset” (Marker in SharedPreferences), um Defaults nach Neuinstallation wiederherzustellen.
3)
local_auth(Biometrie/Device Credentials, kein persistenter Speicher)Technik
Einsatz
4)
shared_preferences(nur Marker für “First run”)Technik
Speichert aktuell
Hinweis
tjorbo commentedon Feb 3, 2026
Super, die Infos können wir sehr gut für #47 nutzen 👍
dennisprzytarski commentedon Feb 8, 2026
@tjorbo, können wir alle Issues in Review closen?
tjorbo commentedon Feb 8, 2026
@dennisprzytarski hab alles bis aus das Theme (soweit ich weiß fehlt da noch der korrekte Export) als fertig markiert. Vielen lieben Dank Dir 🍀