docs: rename and update requirements for native Android app

This commit is contained in:
Jens Reinemann 2026-05-13 13:57:03 +02:00
parent 5d4e139a2f
commit bc97e4b621
2 changed files with 165 additions and 155 deletions

View file

@ -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*

View file

@ -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*