5 KiB
5 KiB
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)
{
"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.80,
"totalPrice": 160.00,
"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)
- APK-Datei herunterladen (via Link oder USB)
- Auf Android-Gerät installieren (Sideloading, "Unbekannte Quellen" erlauben)
- App starten, initialen Inventarstand erfassen
- 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