Architektura MVP to nie "zły kod". To świadoma decyzja: budujemy minimum które działa, ale projektujemy tak żeby dało się rozwijać.
1. Start simple, but not stupid
2. Design for change
3. Avoid premature optimization
"Make it work, make it right, make it fast" — w tej kolejności. Najpierw działający kod, potem refactor, na końcu optymalizacja.
3 podstawowe warstwy:
1. Presentation Layer (UI)
2. Business Logic Layer
3. Data Layer
Przykładowa struktura dla MVP:
lib/
features/ — feature-based organization
auth/ — login, register, profiledashboard/ — main app screenscore/ — shared code
services/ — API, storage, analyticsmodels/ — data modelsutils/ — helpers, extensionsmain.dartBackend: Firebase (BaaS) > Custom API
Dlaczego? Szybkość. Auth, database, storage out-of-the-box.
State Management: Riverpod > Bloc > Provider
Dlaczego? Prosty, type-safe, testable.
Navigation: GoRouter > Navigator 2.0
Dlaczego? Deklaratywny, deep linking, łatwy routing.
Local Storage: Shared Preferences (simple data) + Hive (complex data)
Dlaczego? Lightweight, szybkie, wystarczające dla MVP.
Zaplanuj architekturę swojego MVP. Narysuj diagram 3 warstw. Zdefiniuj folder structure. Wybierz stack (backend, state management, navigation).