Call MethodFetch DataNetworkCacheObserve State
📱
View
Compose / Fragment
🧠
ViewModel
StateFlow<UiState>
🗃️
Repository
Single Source of Truth
🌐
Remote
Retrofit / Ktor
💾
Local DB
Room / DataStore
↔ ObservableView collects ViewModel's StateFlow
MVVM — Login Flow
View calls ViewModel methods → ViewModel owns StateFlow<UiState> → Repository abstracts data sources → View observes state reactively
🎮 Controls
Scenario
🔐 Login Flow
📋 Event Log
📋
No events yet
Trigger an action to see the flow
🔍 State Inspectoridle
{
  "status": "idle",
  "data": null,
  "error": null
}