Skip to content

μ•„ν‚€ν…μ²˜ πŸ—οΈ

myungwoo edited this page May 22, 2025 · 2 revisions

기본 ꡬ쑰

MVI + MVVM, Clean Architecture νŒ¨ν„΄μ„ μ‚¬μš©ν•©λ‹ˆλ‹€. Mongo AI Architecture (1)

디렉토리 ꡬ쑰

lib/
β”œβ”€β”€ core/
β”‚   β”œβ”€β”€ routing/
β”‚   β”œβ”€β”€ ui/
β”‚   β”‚   β”œβ”€β”€ component/
β”‚   β”‚   β”‚   └── input_field.dart
β”‚   β”‚   └── style/
β”‚   β”‚       β”œβ”€β”€ app_colors.dart
β”‚   β”‚       └── app_text_styles.dart
β”‚   └── util/
β”‚       β”œβ”€β”€ string_helper.dart
β”‚       └── ...
β”œβ”€β”€ auth/
β”‚   └── login/
β”‚       β”œβ”€β”€ data/
β”‚       β”‚   β”œβ”€β”€ data_source/
β”‚       β”‚   β”œβ”€β”€ data_source_impl/
β”‚       β”‚   β”œβ”€β”€ repository_impl/
β”‚       β”‚   β”œβ”€β”€ mapper/
β”‚       β”‚   └── dto/
β”‚       β”œβ”€β”€ domain/
β”‚       β”‚   β”œβ”€β”€ model/
β”‚       β”‚   β”œβ”€β”€ repository/
β”‚       β”‚   └── usecase/
β”‚       └── presentation/
β”‚           β”œβ”€β”€ login_action.dart
β”‚           β”œβ”€β”€ login_event.dart
β”‚           β”œβ”€β”€ login_screen.dart
β”‚           β”œβ”€β”€ login_screen_root.dart
β”‚           β”œβ”€β”€ login_state.dart
β”‚           └── login_view_model.dart

λ ˆμ΄μ–΄λ³„ μ—­ν• 

  • data: μ™ΈλΆ€ 데이터 μ†ŒμŠ€μ™€μ˜ 톡신, DTO 관리
  • domain: λΉ„μ¦ˆλ‹ˆμŠ€ 둜직, λͺ¨λΈ, μ €μž₯μ†Œ μΈν„°νŽ˜μ΄μŠ€, μœ μŠ€μΌ€μ΄μŠ€
  • presentation: UI μ»΄ν¬λ„ŒνŠΈ, μƒνƒœ 관리, μ‚¬μš©μž μ•‘μ…˜ 처리

MVI νŒ¨ν„΄ πŸ“

κ°œμš”

MVI(Model-View-Intent) νŒ¨ν„΄μ€ 단방ν–₯ 데이터 흐름을 톡해 예츑 κ°€λŠ₯ν•œ μƒνƒœ 관리λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

ꡬ성 μš”μ†Œ

Model

  • μ•±μ˜ 데이터와 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ 포함
  • 우리 μ•±μ—μ„œλŠ” State ν΄λž˜μŠ€κ°€ 이 μ—­ν•  λ‹΄λ‹Ή

View

  • UIλ₯Ό λ Œλ”λ§ν•˜κ³  μ‚¬μš©μž μž…λ ₯을 캑처
  • [κΈ°λŠ₯λͺ…]_screen.dart 파일이 λ‹΄λ‹Ή

Intent

  • μ‚¬μš©μž μ˜λ„λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ•‘μ…˜
  • [κΈ°λŠ₯λͺ…]_action.dart에 μ •μ˜

데이터 흐름

User Action β†’ Action β†’ ViewModel β†’ State λ³€κ²½ β†’ UI μ—…λ°μ΄νŠΈ β†’ User Action...

μž₯점

  • 예츑 κ°€λŠ₯ν•œ μƒνƒœ 관리
  • 디버깅 μš©μ΄μ„±
  • 단방ν–₯ 데이터 νλ¦„μœΌλ‘œ μ‚¬μ΄λ“œ μ΄νŽ™νŠΈ μ΅œμ†Œν™”
  • ν…ŒμŠ€νŠΈ μš©μ΄μ„±