# 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
