Conversation
1. 레이어 분리 (클린 아키텍처) 클린 아키텍처의 주요 레이어가 모두 존재합니다: Domain Layer (독립적인 비즈니스 로직) domain 모듈 Data Layer (데이터 소스 및 저장소) data 모듈 Presentation Layer (UI 및 뷰모델) presentation 모듈 각 기능별 모듈들 (feature/*) 2. 모듈 구조 (멀티모듈) 모듈 구조도 잘 구성되어 있습니다: 앱 모듈 앱의 진입점 (MainActivity, Application 클래스 등) 코어 모듈 core/common - 공통 유틸리티 및 기능 core/ui - UI 공통 요소 기능 모듈 feature/auth - 인증 기능 feature/menu - 메뉴 관리 feature/onboarding - 온보딩 플로우 feature/order - 주문 관리 feature/sales - 매출 관리 feature/staff - 직원 관리
기본 플러그인 적용: com.android.application - 안드로이드 애플리케이션 빌드 org.jetbrains.kotlin.android - 코틀린 안드로이드 지원 org.jetbrains.kotlin.kapt - 코틀린 애노테이션 프로세싱 androidx.navigation.safeargs.kotlin - 네비게이션 안전 인자 공통 의존성: 기본 안드로이드 라이브러리: androidx-core-ktx, androidx-appcompat, material 데이터 스토리지: androidx-datastore-preferences 로깅: timber 네비게이션: navigation 번들 비동기 처리: kotlinx-coroutines 직렬화: kotlinx-serialization-json 네트워킹: retrofit, okhttp 관련 번들 안드로이드 기본 설정: compileSdk, minSdk, targetSdk 기본값 설정 기본 테스트 인스트루먼테이션 러너 설정
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Related issue 🛠
Work Description ✏️
클린 아키텍처 기반 멀티모듈 구조
app, core, domain, data, feature 등의 모듈 구조화
각 레이어별 역할 분리
Gradle 컨벤션 플러그인
빌드 로직 재사용을 위한 플러그인 모듈화
안드로이드 앱/라이브러리, JVM 라이브러리, Hilt, 네트워크 등 플러그인 구현
버전 카탈로그를 통한 의존성 관리
Screenshot 📸
구현된 Gradle 컨벤션 플러그인 상세 정리
1. AndroidApplicationConventionPlugin
용도: 앱 모듈의 기본 설정을 담당합니다.
적용하는 플러그인:
com.android.application: 안드로이드 애플리케이션 빌드 플러그인org.jetbrains.kotlin.android: 코틀린 안드로이드 플러그인androidx.navigation.safeargs.kotlin: 네비게이션 Safe Args 플러그인주요 설정:
추가하는 의존성:
2. AndroidApplicationComposeConventionPlugin
용도: 앱 모듈의 Jetpack Compose 설정을 담당합니다.
적용하는 플러그인:
org.jetbrains.kotlin.plugin.compose: 코틀린 Compose 컴파일러 플러그인주요 설정:
추가하는 의존성:
3. AndroidLibraryConventionPlugin
용도: 안드로이드 라이브러리 모듈의 기본 설정을 담당합니다.
적용하는 플러그인:
com.android.library: 안드로이드 라이브러리 빌드 플러그인org.jetbrains.kotlin.android: 코틀린 안드로이드 플러그인주요 설정:
추가하는 의존성:
4. AndroidLibraryComposeConventionPlugin
용도: 안드로이드 라이브러리 모듈의 Jetpack Compose 설정을 담당합니다.
적용하는 플러그인:
org.jetbrains.kotlin.plugin.compose: 코틀린 Compose 컴파일러 플러그인주요 설정:
추가하는 의존성:
5. JvmLibraryConventionPlugin
용도: JVM 라이브러리 모듈(안드로이드가 아닌 순수 코틀린/자바 모듈)의 설정을 담당합니다.
적용하는 플러그인:
java-library: 자바 라이브러리 빌드 플러그인org.jetbrains.kotlin.jvm: 코틀린 JVM 플러그인주요 설정:
추가하는 의존성: 기본적으로는 의존성을 추가하지 않습니다.
6. FeatureConventionPlugin
용도: 기능 모듈을 위한 설정을 담당합니다. (각 기능 화면을 담당하는 모듈용)
적용하는 플러그인:
barrion.android.library: 안드로이드 라이브러리 컨벤션 플러그인barrion.android.library.compose: 안드로이드 라이브러리 Compose 컨벤션 플러그인주요 설정: AndroidLibraryConventionPlugin에서 상속받은 설정 사용
추가하는 의존성:
7. HiltConventionPlugin
용도: Dagger Hilt를 통한 의존성 주입 설정을 담당합니다.
적용하는 플러그인:
com.google.devtools.ksp: Kotlin Symbol Processing 플러그인com.google.dagger.hilt.android: Dagger Hilt 안드로이드 플러그인org.jetbrains.kotlin.kapt: 코틀린 Annotation Processing 플러그인주요 설정: 없음
추가하는 의존성:
8. NetworkConventionPlugin
용도: 네트워크 통신 관련 설정을 담당합니다.
적용하는 플러그인:
org.jetbrains.kotlin.plugin.serialization: 코틀린 직렬화 플러그인주요 설정: 없음
추가하는 의존성:
9. ImageLoadingConventionPlugin
용도: 이미지 로딩 라이브러리 설정을 담당합니다.
적용하는 플러그인: 없음
주요 설정: 없음
추가하는 의존성:
멀티모듈 프로젝트 구조 트리
이 구조는 클린 아키텍처 원칙을 따르며, 레이어별로 모듈이 분리되어 있습니다:
또한 빌드 로직이 build-logic/convention 모듈로 분리되어 있어, 모든 모듈에서 일관된 빌드 설정을 사용할 수 있습니다.
Uncompleted Tasks 😅
To Reviewers 📢