From bc97e4b6210186a9c13dde0aabd79202a902d746 Mon Sep 17 00:00:00 2001 From: Jens Reinemann Date: Wed, 13 May 2026 13:57:03 +0200 Subject: [PATCH] docs: rename and update requirements for native Android app --- Anforderungen/KRISENVORRAT_INVENTAR_PLAN-1.md | 155 ---------------- Anforderungen/anforderungen-v1.md | 165 ++++++++++++++++++ 2 files changed, 165 insertions(+), 155 deletions(-) delete mode 100644 Anforderungen/KRISENVORRAT_INVENTAR_PLAN-1.md create mode 100644 Anforderungen/anforderungen-v1.md diff --git a/Anforderungen/KRISENVORRAT_INVENTAR_PLAN-1.md b/Anforderungen/KRISENVORRAT_INVENTAR_PLAN-1.md deleted file mode 100644 index 574c01d..0000000 --- a/Anforderungen/KRISENVORRAT_INVENTAR_PLAN-1.md +++ /dev/null @@ -1,155 +0,0 @@ -# Krisenvorrat Inventar-App – Projektplan - -**Version:** 1.0 -**Datum:** 2026-05-13 -**Status:** Planung abgeschlossen, Umsetzung bereit - ---- - -## 1. Projektziel - -Eine mobile-optimierte Web-App zur Verwaltung eines Krisenvorrats-Inventars. Die App läuft vollständig im Browser (kein App Store, keine Installation), speichert alle Daten in einer einzigen JSON-Datei in OneDrive, und funktioniert autark auf dem Smartphone. - ---- - -## 2. Technischer Stack - -| Komponente | Technologie | Begründung | -|---|---|---| -| App | Einzelne HTML-Datei (Vanilla JS) | Keine Installation, läuft in jedem Browser | -| Datenhaltung | JSON (eine Datei) | Strukturiert, KI-lesbar, kein Redundanz | -| Cloud-Sync | Microsoft Graph API (OneDrive) | Autark, später teilbar | -| Authentifizierung | OAuth 2.0 (Microsoft) | Einmalig, sicher | -| Versionierung | OneDrive Versionsverlauf | Automatisch, kein Git nötig | - ---- - -## 3. Dateistruktur (OneDrive) - -``` -Krisenvorrat/ -├── app/ -│ └── inventory.html ← Die App selbst (einmalig ablegen) -└── data/ - └── inventory.json ← Alle Daten (automatisch von App geschrieben) -``` - ---- - -## 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.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 -- [ ] Beim Start: Prüfen ob inventory.json in OneDrive vorhanden → laden -- [ ] Bei jeder Änderung: sofortiges Schreiben nach OneDrive -- [ ] Offline-Modus: Änderungen im Speicher halten, beim nächsten Online-Start synchronisieren -- [ ] Einmalige Microsoft OAuth-Anmeldung - -### 5.4 Export -- [ ] Markdown-Ansicht (zum Kopieren / für KI-Eingabe) -- [ ] JSON-Download (Backup) - ---- - -## 6. UI / UX - -- **Plattform:** Android Chrome (Smartphone), optimiert für Touch -- **Design:** Klar, funktional, industriell – kein unnötiger Schnickschnack -- **Navigation:** Bottom Navigation Bar (Übersicht / Inventur / Warnungen / Einstellungen) -- **Eingabe:** Große Touch-Targets, Dropdown für Einheiten/Kategorien/Lagerorte -- **Farbschema:** Dunkel (Dunkelgrün / Anthrazit) – Krisenvorrat-Ästhetik, gut lesbar - ---- - -## 7. Spätere Erweiterungen (nicht in v1.0) - -- Mehrbenutzer / Teilen des OneDrive-Ordners 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. App-Datei (`inventory.html`) herunterladen -2. In OneDrive unter `Krisenvorrat/app/` ablegen -3. Datei im Browser öffnen (OneDrive → Datei → Im Browser öffnen) -4. Microsoft-Anmeldung einmalig bestätigen -5. Initialen Inventarstand erfassen -6. Fertig – alle Änderungen werden automatisch gespeichert - ---- - -## 9. Sicherheit & Datenschutz - -- Daten liegen ausschließlich im eigenen OneDrive-Konto -- Kein externer Server, keine Telemetrie -- OAuth-Token wird nur im Browser-Speicher gehalten (Session) -- Zugriff jederzeit über Microsoft-Konto-Einstellungen widerrufbar - ---- - -*Erstellt mit Claude Sonnet 4.6 – 2026-05-13* diff --git a/Anforderungen/anforderungen-v1.md b/Anforderungen/anforderungen-v1.md new file mode 100644 index 0000000..8f96559 --- /dev/null +++ b/Anforderungen/anforderungen-v1.md @@ -0,0 +1,165 @@ +# 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.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 +- [ ] Beim Start: Lokale JSON-Datei laden (interner App-Speicher) +- [ ] Bei jeder Änderung: sofortiges Schreiben in lokale Datei +- [ ] Room (SQLite) als primäre Persistenzschicht +- [ ] JSON-Export/-Import für Backup und Datenaustausch + +### 5.4 Export +- [ ] Markdown-Ansicht (zum Kopieren / für KI-Eingabe, via Share Intent) +- [ ] JSON-Export (Backup via Share Intent) +- [ ] JSON-Import (Restore aus Datei) + +--- + +## 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*