# 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