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
}