---
# System prepended metadata

title: Erstes Brainstorming

---

# Erstes Brainstorming

### Idee:

Entwicklungsarbeit mit Flutter beschleunigen und vereinfachen. (Projektgenerierung und inkrementelles hinzufügen von getesteten Features) 


1. DevTools (CLI, vllt. Snippets für VSCode und Intellij)
2. Miniframework (Teil A für "Production-Code" und Teil B für "Test-Code")
3. Guidelines/Best Practices und Docs für jeden Teil der Architektur.


# 1. Projekt Architektur

## 1.1 Requirements

### 1.2 Allgemein

- Testbarkeit, Verifizierbarkeit ((Widget-)Unit-Tests mit 100% Test-Coverage, Integration Tests, Golden Tests)
- DRY (kleinst mögliche Codebase durch intelligentes Code-Sharing)
- Modularität
- KISS (Wenige einfache Patterns, die von neuen Developern schnell erlernt und angewendet werden können)
- Erweiterbarkeit (inkrementell)
- Unidirektionaler Datenfluss
- Sepration of concerns
- Flexibilät/Kompatibilität (jede andere Dart Library sollte ohne Probleme verwendet werden können ohne spezielle Integrationen implementieren zu müssen + Native Funktionalität muss via Plugin wie in normalen Flutter Projekten genutzt werden können)
- ...

### Konkret

- Custom Assets (Bilder, Videos, Sound, Icons etc.)
- Dependency Injection
- Theming
- Localization
- Immutable Dataclasses
- Statemanagement
- Layering (TODO welche Layers)
- UI = F(STATE)
- Responsive Design
- Logging
- Error-Handling/Traceing
- ...

# 2. CLI

## 2.1 Requirements

- Neues Projekt erstellen (mobile, web, desktop) (mit Beispiel, ohne Beispiel)
- Komponenten + zugehörige Tests generieren
- Assets einbinden
- Code generieren
- Localization generieren
- Tests ausführen (mit/ohne Coverage, mit/ohne Coverage Report)
- Platform zu bestehendem Projekt hinzufügen (mobile, web, desktop)
- ...

# 3. Development Flow (Test Driven)
0. Projekt generieren
1. <font color="green">Tests ausführen (success 100% coverage)</font>
2. Komponente XY + Tests zu XY generieren
3. Tests zu XY implementieren
4. <font color="red">Tests ausführen (failing)</font>
5. Komponente XY implementieren
6. <font color="green">Tests ausführen (success 100% coverage)</font>
7. GOTO 2.


##### \*5. kann 0+ weitere Iterationen  (2. - 7.) enthalten

# 4. Other

- Repositoryverwaltung (CI/CD, Commit-Message Guidelines, Versioning) (vllt. out of scope ?)
- Dokumentations Guidelines
- Dokumentation generieren
- Linting
- Formatting