# 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