Skip to content

Repository files navigation

PicPlz

사진작가와 고객을 연결하는 Android 매칭 플랫폼

Tech Stack

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

Project Structure

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

Module Dependencies

app → features
features → core:domain, core:ui, core:common
core:data → core:domain
core:ui → core:common

Getting Started

Requirements

  • Android Studio Otter 3
  • JDK 17
  • Android SDK 35
  • Gradle 8.9

Setup

  1. Clone

    git clone https://github.com/Picplz/picplz-aos.git
    cd picplz-aos
  2. 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        # 개발용 유저 액세스 토큰
  3. Build

    ./gradlew assembleDebug

Development

Code Quality

Tool Version Command
ktlint 12.1.2 ./gradlew ktlintCheck
detekt 1.23.7 ./gradlew detekt

Pre-commit hook이 설정되어 있어 커밋 시 자동으로 검사됩니다.

# 자동 포맷팅
./gradlew ktlintFormat

Branch Strategy

main          ← production
  ↑
develop       ← integration
  ↑
feat/123      ← feature branches
fix/456       ← bug fix branches

Branch Naming: feat/이슈번호, fix/이슈번호, refactor/이슈번호, docs/이슈번호

Commit Convention

Gitmoji 사용

Emoji Code Description
:sparkles: 새 기능
🐛 :bug: 버그 수정
♻️ :recycle: 리팩토링
📝 :memo: 문서
🎨 :art: 코드 구조/포맷 개선
🔥 :fire: 코드/파일 삭제
🚚 :truck: 리소스 이동/이름 변경
:white_check_mark: 테스트 추가/수정
✨ 사진작가 검색 필터 추가
🐛 채팅방 목록 새로고침 오류 수정
♻️ AuthRepository DI 구조 개선

Architecture (MVI)

각 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)

Test Distribution

Firebase Console에서 App Distribution으로 테스트 배포 중

Documentation

각 모듈별 상세 문서는 AGENTS.md 참조:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages