bollwerk/Anforderungen/design/requirements.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

3.7 KiB
Raw Blame History

Technology Requirements UI/Design-Entscheidungen

Date: 2026-05-13
Issue: #3
Author: Tech-Decision Workflow


Kontext

Vor der Implementierung der ersten UI-Screens müssen vier visuelle Designentscheidungen getroffen werden, die direkt in die Compose-Theme-Datei einfließen. Die App ist eine native Android-App (Kotlin + Jetpack Compose + Material 3).

Übergeordnetes Design-Ziel laut Anforderungen (anforderungen-v1.md, Abschnitt 6):

  • Stil: Klar, funktional, industriell
  • UI-Framework: Material 3 Komponenten
  • Farbschema: Dark Theme, Dunkelgrün / Anthrazit "Bollwerk-Ästhetik", gut lesbar

Entscheidung A Konkrete Farbwerte (Seed Color für Dark Theme)

Must-Have (Eliminatoren)

  • Dark Theme als primäres Theme (nicht optional)
  • Farbe vermittelt Seriosität und Funktionalität (kein grelles Grün, kein Hellblau)
  • Kontrastverhältnis ≥ 4.5:1 auf dunklen Hintergründen (WCAG AA)
  • Material 3 kompatibel (Seed-Color-basiertes Color Scheme)

Should-Have

  • "Waldgrün / Olivgrün / Militärgrün"-Anmutung (passt zum Thema Bollwerk)
  • Anthrazit-Töne für Oberflächen (nicht reines Schwarz, nicht Hellgrau)
  • Erkennbarer visueller Charakter App soll eigenständig aussehen

Nice-to-Have

  • Leichte grüne Tönung der neutralen Flächen (M3 erzeugt das automatisch aus dem Seed)
  • Guter Look auch im Light Theme (falls später aktiviert)

Constraints

  • Platform: Android, Jetpack Compose, Material 3
  • Tooling: Material Theme Builder (https://m3.material.io/theme-builder)
  • Keine externen Design-Bibliotheken nur Compose-eigene Theme-Mechanismen

Entscheidung B Material 3 Dynamic Color (Wallpaper-basiert) oder feste Palette?

Must-Have

  • Theme muss zuverlässig auf Android 8+ funktionieren (Projekt-minSdk ist noch nicht festgelegt, aber breite Kompatibilität erwünscht)
  • Grün/Anthrazit-Ästhetik muss erkennbar bleiben nicht durch Wallpaper überschrieben

Should-Have

  • Kein Mehraufwand in der Wartung / Pflege

Nice-to-Have

  • Optionales Dynamic Color auf Android 12+ als "Bonus"

Constraints

  • Dynamic Color (Monet) erfordert API 31 (Android 12+) schließt Android 811 aus, wenn nicht separat gehandhabt

Entscheidung C Typography-Stil

Must-Have

  • Exzellente Lesbarkeit auf kleinen Smartphone-Displays
  • Gut geeignet für zahlenreiche Daten (Lagermengen, Preise, Datumsangaben)
  • Material 3 TypeScale kompatibel (Display / Headline / Title / Body / Label)

Should-Have

  • Klare, sachliche Anmutung (nicht verspielt oder gerundet)
  • Kein separates Google-Fonts-Netzwerkaufruf beim ersten Start (oder Fallback)

Nice-to-Have

  • Leichte typografische Eigenständigkeit gegenüber Standard-Android-Apps
  • Variable-Font-Unterstützung (Roboto Flex o.ä.)

Constraints

  • Jetpack Compose / Material 3 TypeScale
  • Kein unnötiger APK-Overhead durch komplexe Schriftarten
  • Offline-First (Font darf nicht ausschließlich per Netzwerk geladen werden)

Entscheidung D Icon-Set

Must-Have

  • Native Jetpack Compose Integration (kein SVG-Wrapping-Overhead)
  • Alle benötigten Icons vorhanden: Inventar (Kiste/Box), Kategorie, Lagerort, Warnung, Ablaufdatum, Bearbeiten, Löschen, Import, Export, Einstellungen, Suche, Navigation
  • Frei / Open Source (kein kommerzielles Lizenz-Risiko)

Should-Have

  • Konsistent mit Material 3 visueller Sprache
  • Breite Icon-Auswahl (>500 Icons) für spätere Erweiterungen

Nice-to-Have

  • Mehrere Icon-Styles (Outlined, Filled, Rounded) für Variationsmöglichkeit
  • Minimalistische, "industrielle" Icon-Ästhetik

Constraints

  • APK-Größe: bei Sideloading kein hartes Limit, aber ProGuard sollte unbenutzte Icons entfernen können
  • Keine Abhängigkeit von externer Netzwerkressource zur Laufzeit