Skip to content

πŸ“° 클린 μ•„ν‚€ν…μ²˜ λ‰΄μŠ€ μ•±

License

Notifications You must be signed in to change notification settings

hoyahozz/newsApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

wanted_preonboarding_android

μ›ν‹°λ“œ ν”„λ¦¬μ˜¨λ³΄λ”© 사전 κ³Όμ œμž…λ‹ˆλ‹€.

λ‰΄μŠ€λ₯Ό 쑰회 및 μ €μž₯ν•  수 μžˆλŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€.

Architecture

전체 μ•„ν‚€ν…μ²˜λ‘œ Clean Architecture λ₯Ό μ μš©ν•˜μ˜€κ³ , 각 λ ˆμ΄μ–΄λ₯Ό λ‚˜λˆ  Multi Module 둜 κ΅¬μ„±ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

νŠΉμ΄μ‚¬ν•­μœΌλ‘œ ν”„λ‘œμ νŠΈμ˜ 규λͺ¨κ°€ 크지 μ•Šλ‹€λŠ” 것을 κ³ λ €ν•˜μ—¬ Clean Architecture μ—μ„œ 주둜 μ‚¬μš©ν•˜λŠ” DataSource μ˜μ—­μ„ μ œμ™Έν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Presentation λͺ¨λ“ˆμ—λŠ” κ°œλ³„μ μœΌλ‘œ MVVM λ””μžμΈ νŒ¨ν„΄μ„ μ μš©ν•˜μ˜€μŠ΅λ‹ˆλ‹€.

Implementation

  • ν•΄λ‹Ή ν”„λ‘œμ νŠΈλŠ” Single Activity 의 ν˜•νƒœλ‘œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 제곡된 λ””μžμΈ κ°€μ΄λ“œμ™€ μ΅œλŒ€ν•œ μœ μ‚¬ν•˜κ²Œ κ΅¬ν˜„ν•˜μ˜€μŠ΅λ‹ˆλ‹€.
  • ν•˜λ‹¨μ— 각 νƒ­μœΌλ‘œ μ§„μž…ν•  수 μžˆλŠ” λ°”ν…€ λ„€λΉ„κ²Œμ΄μ…˜μ΄ 있으며, μ΅œμ‹  λ‰΄μŠ€μ™€ μΉ΄ν…Œκ³ λ¦¬λ³„ λ‰΄μŠ€, μ €μž₯ν•œ λ‰΄μŠ€λ₯Ό μ‘°νšŒν•  수 μžˆλŠ” νƒ­μœΌλ‘œ κ΅¬μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€.
  • 이미지λ₯Ό 뢈러올 수 μ—†λŠ” 경우 μ€€λΉ„λœ 이미지λ₯Ό 톡해 μœ μ €μ—κ²Œ μ•ˆλ‚΄ν•©λ‹ˆλ‹€. (곡톡)
  • λͺ¨λ“  화면에 κ°€λ‘œ λͺ¨λ“œ 적용이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

Top News

  • μ΅œμ‹  λ‰΄μŠ€λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • λ‰΄μŠ€ 게재 ν›„ κ²½κ³Ό μ‹œκ°„μ„ 화면에 ν‘œν˜„ν•©λ‹ˆλ‹€.
  • λ‰΄μŠ€λ₯Ό ν΄λ¦­ν•˜λ©΄ 상세 정보λ₯Ό 확인할 수 있고, 별 λͺ¨μ–‘ μ•„μ΄μ½˜μ„ 톡해 λ‚΄λΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯ 및 μ‚­μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€.
    • λ§Œμ•½ λ‚΄λΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— 이미 μ €μž₯된 λ‰΄μŠ€λΌλ©΄ 우츑 μƒλ‹¨μ˜ 별 μ•„μ΄μ½˜μ— λ…Έλž€ 배경이 μΆ”κ°€λ©λ‹ˆλ‹€.
  • 화면을 μœ„λ‘œ 당겨 λ‰΄μŠ€ μƒˆλ‘œκ³ μΉ¨μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

Category

  • μΉ΄ν…Œκ³ λ¦¬λ³„ λ‰΄μŠ€λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 상단 앱바에 μ„ νƒν•œ μΉ΄ν…Œκ³ λ¦¬λͺ…이 좜λ ₯λ©λ‹ˆλ‹€.
  • μΉ΄ν…Œκ³ λ¦¬ 선택 μ™Έμ—λŠ” μ „μ²΄μ μœΌλ‘œ Top News νƒ­κ³Ό λ™μΌν•˜κ²Œ λ™μž‘ν•©λ‹ˆλ‹€.

Save

  • λ‚΄λΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— μ €μž₯된 λ‰΄μŠ€λ₯Ό μ‘°νšŒν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • κ°€μž₯ μ΅œκ·Όμ— 게재된 μˆœμ„œλŒ€λ‘œ 화면에 좜λ ₯λ©λ‹ˆλ‹€.
  • 별 λͺ¨μ–‘μ˜ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ λ‚΄λΆ€ λ°μ΄ν„°λ² μ΄μŠ€μ— ν•΄λ‹Ή λ‰΄μŠ€λ₯Ό μΆ”κ°€ 및 μ‚­μ œν•  수 있고, μ΄λŠ” 화면에도 λ°”λ‘œ ν‘œν˜„λ©λ‹ˆλ‹€.
  • μ €μž₯된 λ‰΄μŠ€κ°€ 없을 경우 μœ μ €μ—κ²Œ μ•ˆλ‚΄ λ©”μ‹œμ§€λ₯Ό 좜λ ₯ν•©λ‹ˆλ‹€.
  • μ—‘ μ’…λ£Œ ν›„ μž¬μ‹€ν–‰ν•˜μ—¬λ„ ν•΄λ‹Ή λ‰΄μŠ€ λ°μ΄ν„°λŠ” μœ μ§€λ©λ‹ˆλ‹€.

Error Handling

  • λ„€νŠΈμ›Œν¬ 톡신 쀑 μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ μœ μ €μ—κ²Œ μ•ˆλ‚΄ν•©λ‹ˆλ‹€.
  • μœ μ €λŠ” μž¬μ‹œλ„ λ²„νŠΌμ„ ν΄λ¦­ν•˜μ—¬ λ‹€μ‹œ λ„€νŠΈμ›Œν¬ 톡신을 μ‹œλ„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • μ—λŸ¬ 핸듀링 μ‹œ μ§€μ›ν•˜λŠ” μ—λŸ¬ νƒ€μž…μ€ μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€.
    • νƒ€μž„μ•„μ›ƒ μ—λŸ¬
    • μ„œλ²„ μ—λŸ¬
    • 잘λͺ»λœ μš”μ²­
    • 원인 뢈λͺ…

Multiple Backstack

  • 탭별 λ°±μŠ€νƒμ„ μ§€μ›ν•©λ‹ˆλ‹€.
  • λ‹€λ₯Έ νƒ­μœΌλ‘œ 이동해도 λ°±μŠ€νƒμ΄ μ΄ˆκΈ°ν™”λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Package Structure

β”œβ”€β”€ app
β”œβ”€β”€ data
β”‚Β Β    β”œβ”€β”€ di
β”‚Β Β    β”œβ”€β”€ local
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ dao
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ entity
β”‚Β Β    β”œβ”€β”€ remote
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ api
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ interactor
β”‚Β Β    β”‚Β Β   └── response
β”‚Β Β    β”œβ”€β”€ repository
β”‚Β Β    └── util
β”œβ”€β”€ domain
β”‚Β Β    β”œβ”€β”€ interactor
β”‚Β Β    β”œβ”€β”€ model
β”‚Β Β    β”œβ”€β”€ repository
β”‚Β Β    └── usecase
β”œβ”€β”€ presentation
β”‚Β Β    β”œβ”€β”€ ui
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ adapter
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ category
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ categoryNews
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ detail
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ main
β”‚Β     β”‚Β Β   β”œβ”€β”€ model
β”‚     β”‚Β Β   β”œβ”€β”€ news
β”‚Β Β    β”‚Β Β   β”œβ”€β”€ save
β”‚Β Β    β”‚Β Β   └── util

Tech Stack

Clean Architecture, MVVM, Multi Module, Kotlin, Navigation, Hilt, Okhttp3, Retrofit2, Room, Glide, Databinding, BindingAdapter, ListAdapter, LiveData, SwipeRefreshLayout

Commit Convention

  • feat : {something} : κΈ°λŠ₯ μΆ”κ°€
  • fix : {something} : 문제 ν•΄κ²°
  • refactor : {something} : μ½”λ“œ κ°œμ„ 
  • chore : {something} : ν”„λ‘œμ νŠΈ μ„ΈνŒ…
  • rename : {something} : λ‹¨μˆœ 넀이밍 λ³€κ²½
  • docs : {something} : README λ“± λ¬Έμ„œλ₯Ό μˆ˜μ •ν•˜λŠ” 경우

Environment

  • Android Studio Chipmunk | 2021.2.1
  • minSdkVersion 21
  • targetSdkVersion 32
  • Test Device | Galaxy Note 8

About

πŸ“° 클린 μ•„ν‚€ν…μ²˜ λ‰΄μŠ€ μ•±

Topics

Resources

License

Stars

Watchers

Forks

Languages