Repository navigation
refactor: 단일 :app 모듈을 피처+코어 멀티모듈 구조로 전환 - #27
Merged
Merged
Conversation
- 프로젝트 구조를 단일 모듈에서 멀티 모듈(feature, core) 체제로 전환
- core 레이어 분리 및 모듈화:
- **core:model**: 도메인 엔티티 및 공통 데이터 모델 이동
- **core:domain**: Repository 인터페이스 정의 이동
- **core:network**: Retrofit 서비스, DTO, Interceptor 등 통신 로직 이동
- **core:data**: Repository 구현체 및 Mapper 로직 이동
- **core:designsystem**: 공통 UI 컴포넌트, 테마(Color, Type, Theme), 리소스(폰트, 이미지) 이동
- **core:datastore**: TokenManager 등 로컬 저장소 로직 이동
- feature 레이어 분리 및 모듈화:
- 기능 단위로 모듈 분리 (auth, home, combination, profile, onboarding)
- 각 모듈로 Screen, ViewModel, 기능 전용 컴포넌트 이동
- 모듈화에 따른 패키지 경로 수정 및 Import 문 최적화
- 더 이상 사용하지 않는 Swagger API 예제 코드(ExampleApiUsageViewModel) 삭제
- 프로젝트 구조를 `core` 및 `feature` 계층으로 분리하여 멀티 모듈 아키텍처 도입 - 공통 빌드 로직 관리를 위한 `build-logic` 도입 및 컨벤션 플러그인(Application, Library, Feature, Hilt 등) 구현 - 레이어별 핵심 모듈 생성: `:core:model`, `:core:domain`, `:core:data`, `:core:network`, `:core:designsystem`, `:core:datastore` - 기능별 피처 모듈 생성: `:feature:auth`, `:feature:home`, `:feature:combination`, `:feature:onboarding`, `:feature:profile` - `app` 모듈의 비대해진 `build.gradle.kts` 설정을 모듈별로 분산하고 의존성 구조 최적화 - 모듈화에 따른 패키지 이동 및 관련 소스코드 임포트 경로 일괄 수정 - 프로젝트 전체 SDK 버전을 36(Android 15)으로 상향 조정 및 Java 17 설정 적용
- 프로젝트 전반에 ktlint 스타일(android_studio) 적용 및 대규모 코드 포맷팅 수행 - GitHub Actions CI 환경에서 google-services.json stub 생성 로직 추가 (Secret 의존성 제거) - TokenManager에 JWT Payload에서 userId를 추출하는 기능 구현 및 Repository 연동 - AuthInterceptor의 토큰 재발급(Reissue) 및 401 Unauthorized 에러 처리 로직 개선 - 레시피 등록/수정/삭제 시 실제 API 호출 및 이미지 Base64 인코딩 처리 로직 추가 - Navigation 및 Scaffold 하단 바 노출 조건 정교화 (로그인, 등록, 상세 페이지 등) - Repository 및 ViewModel 내 Mock API 처리와 실제 서버 API 호출 로직 정비 - Compose UI 컴포넌트 내 불필요한 import 정리 및 스타일 가이드 준수
- Gradle 버전을 9.4.1로, AGP를 9.2.1로 업그레이드 - Kotlin 버전을 2.3.21로 업데이트 및 관련 KSP 버전 조정 - AGP 9 대응을 위해 build-logic의 `CommonExtension` 설정을 Application과 Library 타입별로 분리 및 리팩터링 - SDK 설정 방식을 AGP 9에서 권장하는 블록 형식(`version = release(36)`)으로 변경 - Foojay 툴체인 리졸버 플러그인 추가 및 JVM 도구 모음(toolchain) 설정 도입 - Compose BOM(2026.05.01), Retrofit(3.0.0), Hilt(2.59.2) 등 주요 의존성 라이브러리 대폭 업데이트 - `gradle.properties`에 AGP 및 빌드 성능 관련 최신 플래그 추가
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.
📌𝘐𝘴𝘴𝘶𝘦𝘴
📎𝘞𝘰𝘳𝘬 𝘋𝘦𝘴𝘤𝘳𝘪𝘱𝘵𝘪𝘰𝘯
단일
:app모듈을 Now in Android 스타일 피처+코어 멀티모듈 구조로 전환했습니다.모듈 그래프 (12개)
:app— Application / MainActivity / NavGraph / route / MainViewModel + DI 통합:core:model— entity + DummyData:core:domain— repository 인터페이스:core:datastore— TokenManager (DataStore):core:network— service / dto / AuthInterceptor / NetworkModule / ApiModule:core:designsystem— theme / 공용 컴포넌트 / ModifierExt / drawable·font:core:data— mapper / repositoryimpl / RepositoryModule:feature:auth / home / combination / onboarding / profilebuild-logic 컨벤션 플러그인 도입
부수 정리
ExampleApiUsageViewModel삭제:feature:combination으로 이동검증
./gradlew :app:assembleDebug✅ (clean·cached 모두 BUILD SUCCESSFUL, APK 생성)./gradlew testDebugUnitTest✅ (전 모듈 통과)📷𝘚𝘤𝘳𝘦𝘦𝘯𝘴𝘩𝘰𝘵
구조/빌드 변경이라 UI 스크린샷 없음 (런타임 동작 변화 없음).
💬𝘛𝘰 𝘙𝘦𝘷𝘪𝘦𝘸𝘦𝘳𝘴
:core:domain→:core:network잠정 의존:CombinationRepository가android.net.Uri와 일부 DTO 를 직접 노출해서 생긴 것. 도메인 순수화는 별도 작업으로 TODO 주석에 표기.firebase-bom은 34.14.0 으로 올리면 play-services-measurement 가 Kotlin metadata 2.2.0 으로 빌드돼 본 프로젝트 Kotlin 2.0.21 과 충돌 → 34.7.0 고정 (사유 TOML 주석).