# Krisenvorrat Inventar-App – Anforderungen **Version:** 1.0 **Datum:** 2026-05-13 **Status:** Planung abgeschlossen, Umsetzung bereit --- ## 1. Projektziel Eine native Android-App zur Verwaltung eines Krisenvorrats-Inventars. Die App speichert alle Daten lokal als JSON und ermöglicht späteren Datenaustausch über einen REST-Server. Verteilung erfolgt via APK-Sideloading (kein Google Play Store) – rein privater Gebrauch. --- ## 2. Technischer Stack | Komponente | Technologie | Begründung | | ------------------- | ---------------------------- | ------------------------------------------ | | Sprache | Kotlin | Moderne Android-Standardsprache | | UI | Jetpack Compose | Deklarativ, aktuelles Android-UI-Framework | | Architektur | MVVM + Clean Architecture | Testbar, wartbar, klar getrennt | | Persistenz | Room (SQLite) | Robuste lokale DB mit Coroutines-Support | | DI | Hilt | Standard-DI für Android | | Async | Kotlin Coroutines + Flow | Reaktive Datenströme | | Datenexport/-import | JSON (kotlinx.serialization) | Strukturiert, KI-lesbar, portabel | | Build | Gradle (Kotlin DSL) | Android-Standard | | Verteilung | APK-Sideloading | Kein Store nötig, privater Gebrauch | --- ## 3. Datenaustausch (Phase 2 – nicht in v1.0) - REST-Server im Internet für Sync/Sharing zwischen Geräten - Während Entwicklung: Server lokal auf Laptop, Testgerät im LAN - Server-Technologie: noch zu entscheiden --- ## 4. Datenmodell (inventory.json) ```json { "meta": { "version": "1.0", "lastUpdated": "2026-05-13T00:00:00Z", "persons": 4, "kcalPerPersonPerDay": 2000 }, "categories": [ "Grundnahrungsmittel", "Fette & Öle", "Wasser & Aufbereitung", "Kochen & Energie", "Gesundheit & Hygiene", "Werkzeuge", "Kleidung", "Sonstiges" ], "locations": ["Keller", "Küche", "Garage", "Schlafzimmer", "Sonstiges"], "items": [ { "id": "uuid", "name": "Weizen", "category": "Grundnahrungsmittel", "quantity": 200, "unit": "kg", "unitPrice": 0.8, "totalPrice": 160.0, "kcalPer100g": 340, "expiryDate": "2028-01-01", "location": "Keller", "minStock": 50, "notes": "", "lastUpdated": "2026-05-13T00:00:00Z" } ] } ``` --- ## 5. Funktionsumfang – Version 1.0 ### 5.1 Inventarverwaltung - [ ] Artikel anlegen (Name, Kategorie, Menge, Einheit, Preis, Lagerort, Ablaufdatum, Mindestbestand) - [ ] Artikel bearbeiten - [ ] Artikel löschen - [ ] Kategorien und Lagerorte verwalten ### 5.2 Übersichten & Analyse - [ ] Gesamtübersicht nach Kategorie - [ ] **Reichweitenrechner:** Automatische Berechnung wie lange Vorrat reicht (basierend auf Personenzahl + kcal/Tag) - [ ] **Ablaufdaten-Warnung:** Was läuft in 6 / 12 Monaten ab? - [ ] **Mindestbestand-Warnung:** Artikel unterhalb Mindestniveau (rot markiert) - [ ] Gesamtwert des Vorrats ### 5.3 Datenhaltung - [ ] **Room (SQLite) ist die einzige Datenquelle zur Laufzeit** - [ ] Beim ersten Start: leere Datenbank, User erfasst Daten - [ ] Alle Änderungen werden direkt in Room persistiert - [ ] Reactive UI via Coroutines + Flow aus Room ### 5.4 Import / Export (JSON) - [ ] **JSON-Export:** Gesamtes Inventar als JSON-Datei exportieren (via Share Intent / Datei speichern) - [ ] **JSON-Import:** Inventar aus JSON-Datei laden (Restore / Datenübernahme), ersetzt oder merged bestehende Daten - [ ] **Markdown-Export:** Inventar als Markdown-Text (Copy / Share für KI-Eingabe) --- ## 6. UI / UX - **Plattform:** Native Android-App, optimiert für Smartphone (Touch) - **Design:** Klar, funktional, industriell – Material 3 Komponenten - **Navigation:** Bottom Navigation Bar (Übersicht / Inventur / Warnungen / Einstellungen) - **Eingabe:** Große Touch-Targets, Dropdown für Einheiten/Kategorien/Lagerorte - **Farbschema:** Dark Theme (Dunkelgrün / Anthrazit) – Krisenvorrat-Ästhetik, gut lesbar --- ## 7. Spätere Erweiterungen (nicht in v1.0) - REST-Server für Datenaustausch/Sync zwischen Geräten - Mehrbenutzer / Teilen des Inventars mit Freunden/Netzwerk - Einkaufslisten-Funktion (automatisch aus Mindestbeständen generieren) - Barcode-Scanner für schnelle Erfassung - Foto-Anhänge pro Artikel - Benachrichtigungen bei ablaufenden Artikeln --- ## 8. Einrichtung (einmalig) 1. APK-Datei herunterladen (via Link oder USB) 2. Auf Android-Gerät installieren (Sideloading, "Unbekannte Quellen" erlauben) 3. App starten, initialen Inventarstand erfassen 4. Fertig – alle Änderungen werden lokal gespeichert --- ## 9. Sicherheit & Datenschutz - Alle Daten liegen ausschließlich lokal auf dem Gerät (interner App-Speicher) - Kein externer Server in v1.0, keine Telemetrie - Keine Berechtigungen außer Dateizugriff für Import/Export - Kein Tracking, keine Werbung --- ## 10. Entwicklungsumgebung - **IDE:** VS Code mit Android-Extensions / Android Studio - **Build:** Gradle (Kotlin DSL) - **Test-Gerät:** Android-Smartphone (noch nicht für Entwicklung eingerichtet) - **Deployment:** ADB über USB oder WLAN - **CI:** GitHub Actions (assembleDebug + Unit Tests) --- _Aktualisiert: 2026-05-13 – Umstellung auf native Android-App_