bollwerk/Anforderungen/anforderungen-v1.md
Jens Reinemann a5f89e6a69 rename: Krisenvorrat -> Bollwerk
- 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
2026-05-17 17:44:02 +02:00

5.4 KiB
Raw Blame History

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)

{
  "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