1️⃣ 패턴

UDF 적용 MVVM 패턴을 사용합니다.

2️⃣ 패키지 관리

화면 단위로 presentation 내 sub-package를 둡니다.

feature
  ㄴ component
  ㄴ navigation
  ㄴ ${Feature}Contract.kt
  ㄴ ${Feature}Screen.kt
  ㄴ ${Feature}ViewModel.kt

3️⃣ Contract

Contract는 UiState와 UiEffect를 갖습니다.

data class ${Feature}UiState(
	...
) : UiState

sealed interface ${Feature}UiEffect : UiEffect {
	...
}

4️⃣ ViewModel

ViewModel은 BaseViewModel을 상속받습니다.

UiState와 UiEffect에 대한 Flow 생성 및 구독을 위한 반복 코드를 최소화합니다.