com.poti.android
├── core
│ ├── base
│ ├── common
│ │ ├── extension
│ │ ├── state
│ │ └── util
│ ├── designsystem
│ │ ├── component
│ │ └── theme
│ ├── navigation
│ └── network
│ ├── di
│ ├── model
│ └── util
│
├── data
│ ├── di
│ ├── local
│ │ ├── dao
│ │ ├── datasource
│ │ └── entity
│ ├── mapper
│ ├── remote
│ │ ├── datasource
│ │ ├── dto
│ │ └── service
│ └── repository
│
├── domain
│ ├── model
│ ├── repository
│ ├── type
│ └── usecase
│
└── presentation
├── auth
│ └── navigation
├── main
│
├── myparty
│ ├── navigation
│ ├── participant
│ └── recruiter
│
├── onboarding
│ └── navigation
│
├── party
│ ├── home
│ ├── goodsfilter
│ ├── detail
│ └── create
│
└── user
├── mypage
└── profile
레이어는 4개로 고정: core / data / domain / presentation
feature 간 직접 참조 금지: 다른 feature의 Screen, ViewModel, model을 import 하지 않는다.
→ 이동이 필요하면 해당 feature의 navigation만 의존한다.
패키지명은 소문자, 단수/복수 혼용 금지, 약어 지양
파일명은 PascalCase, 클래스/Composable은 파일명과 일치
corecore
├── base
├── common
│ ├── extension
│ ├── state
│ └── util
├── designsystem
│ ├── component
│ └── theme
├── navigation
└── network
├── di
├── model
└── util
앱 전역에서 재사용되는 기반 코드(도메인/feature 모름)
datadata
├── di
├── local
│ ├── dao
│ ├── datasource
│ └── entity
├── mapper
├── remote
│ ├── datasource
│ ├── dto
│ └── service
└── repository
도메인 repository 구현 + 데이터 소스