- Package: de.krisenvorrat.* -> de.bollwerk.* - Klassen: KrisenvorratApp/Database/Theme -> Bollwerk* - ApplicationId: de.bollwerk.app - Server: BOLLWERK_* Env-Vars, bollwerk HOCON-Config - Docker: bollwerk-server/db/backup Container-Namen - Room DB: bollwerk.db, SharedPrefs: bollwerk_secure_prefs - Export-Dateien: bollwerk_export/inventar - UI-Strings, HTML, Admin-UI: alle auf Bollwerk - Docs, Skills, README angepasst - Alle Tests gruen, Build erfolgreich
163 lines
5.4 KiB
Markdown
163 lines
5.4 KiB
Markdown
# Bollwerk Inventar-App – Anforderungen
|
||
|
||
**Version:** 1.0
|
||
**Datum:** 2026-05-13
|
||
**Status:** Planung abgeschlossen, Umsetzung bereit
|
||
|
||
---
|
||
|
||
## 1. Projektziel
|
||
|
||
Eine native Android-App zur Verwaltung eines Bollwerks-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) – Bollwerk-Ä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_
|