- 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
3.7 KiB
3.7 KiB
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 8–11 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