사진작가와 고객을 연결하는 Android 매칭 플랫폼
| Category | Stack |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose, Material3 |
| Architecture | MVI, Multi-module |
| DI | Hilt |
| Async | Coroutines, Flow |
| Map | Kakao Map SDK |
| Auth | Kakao Login |
| Distribution | Firebase App Distribution |
picplz/
├── app/ # Application entry point
├── core/
│ ├── common/ # Utilities, Constants
│ ├── data/ # Repository impl, API, Network
│ ├── domain/ # UseCases, Models, Interfaces
│ └── ui/ # Design System, Theme, Common Components
└── feature/
├── auth/ # Login, Sign Up
├── chat/ # Chat rooms, Messaging
├── photographer/ # Search, Detail, Portfolio
├── mypage/ # User profile
├── feed/ # Feed tab
└── main/ # Home, Search, Reservation
app → features
features → core:domain, core:ui, core:common
core:data → core:domain
core:ui → core:common
- Android Studio Otter 3
- JDK 17
- Android SDK 35
- Gradle 8.9
-
Clone
git clone https://github.com/Picplz/picplz-aos.git cd picplz-aos -
local.properties 설정
sdk.dir=/path/to/android/sdk api_base_url=https://api.example.com kakao_native_app_key=your_kakao_native_app_key kakao_oauth_host=your_kakao_oauth_host kakao_rest_api_key=your_kakao_rest_api_key dev_guest_token=your_dev_guest_token # 개발용 게스트 액세스 토큰 dev_user_token=your_dev_user_token # 개발용 유저 액세스 토큰
-
Build
./gradlew assembleDebug
| Tool | Version | Command |
|---|---|---|
| ktlint | 12.1.2 | ./gradlew ktlintCheck |
| detekt | 1.23.7 | ./gradlew detekt |
Pre-commit hook이 설정되어 있어 커밋 시 자동으로 검사됩니다.
# 자동 포맷팅
./gradlew ktlintFormatmain ← production
↑
develop ← integration
↑
feat/123 ← feature branches
fix/456 ← bug fix branches
Branch Naming: feat/이슈번호, fix/이슈번호, refactor/이슈번호, docs/이슈번호
Gitmoji 사용
| Emoji | Code | Description |
|---|---|---|
| ✨ | :sparkles: |
새 기능 |
| 🐛 | :bug: |
버그 수정 |
| ♻️ | :recycle: |
리팩토링 |
| 📝 | :memo: |
문서 |
| 🎨 | :art: |
코드 구조/포맷 개선 |
| 🔥 | :fire: |
코드/파일 삭제 |
| 🚚 | :truck: |
리소스 이동/이름 변경 |
| ✅ | :white_check_mark: |
테스트 추가/수정 |
✨ 사진작가 검색 필터 추가
🐛 채팅방 목록 새로고침 오류 수정
♻️ AuthRepository DI 구조 개선
각 feature는 5개 파일로 구성:
feature/
└── some_feature/
├── SomeScreen.kt # Composable UI
├── SomeViewModel.kt # State holder (Hilt)
├── SomeState.kt # UI State (data class + idle())
├── SomeIntent.kt # User actions (sealed interface)
└── SomeSideEffect.kt # One-off events (Navigation, Toast)
Firebase Console에서 App Distribution으로 테스트 배포 중
각 모듈별 상세 문서는 AGENTS.md 참조: