Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 75 additions & 0 deletions .coderabbit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
# CodeRabbit AI 코드 리뷰 설정 파일
# 문서: https://docs.coderabbit.ai/configuration

language: ko-KR

reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
poem: false

auto_review:
enabled: true
drafts: false

path_filters:
- "**/*.kt"
- "**/*.kts"
- "!**/build/**"

instructions: |
리뷰 시 다음 사항만 집중해서 검토해줘:
1. 오타 (변수명, 함수명, 주석 등)
2. 아키텍처/디자인 패턴 일관성 (MVI 패턴, api/impl 모듈 분리 등)
3. 크리티컬한 이슈 (NPE, 메모리 릭, 무한루프 등)
4. 컴파일 에러 또는 런타임 에러 가능성

MVI 패턴 규칙:
- UI 상태 표현은 반드시 State를 통해서만 해야 함
- 사용자 터치/액션은 Intent를 통해 ViewModel로 전달
- 일회성 이벤트(Toast, Navigation, SnackBar 등)는 Effect를 통해 처리
- Screen에서 직접 상태를 변경하거나 remember로 UI 로직을 관리하면 안 됨

다음은 지적하지 마:
- Text, Image, Icon 컴포넌트의 contentDescription = null
- 사소한 스타일 개선 제안
- 코드 포맷팅

tools:
detekt:
enabled: true
shellcheck:
enabled: false
ruff:
enabled: false
markdownlint:
enabled: false
biome:
enabled: false
hadolint:
enabled: false
swiftlint:
enabled: false
phpstan:
enabled: false
golangci-lint:
enabled: false
yamllint:
enabled: false
eslint:
enabled: false
flake8:
enabled: false
rubocop:
enabled: false
pmd:
enabled: false
cppcheck:
enabled: false
clippy:
enabled: false
sqlfluff:
enabled: false
pylint:
enabled: false
65 changes: 65 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# Neki Project Guidelines

## Project Overview
- Android 앱 프로젝트 (Kotlin + Jetpack Compose)
- Multi-module 아키텍처 (feature api/impl 분리)
- Hilt DI + Navigation3
- MVI 패턴 (State, Intent, Effect)

## Module Structure
```
app/ # 앱 진입점
build-logic/ # Convention Plugins
core/
├── common/ # 공통 유틸리티
├── data/ # Repository 구현체
├── data-api/ # Repository 인터페이스
├── designsystem/ # 디자인 시스템 (Theme, Component)
├── domain/ # UseCase
├── model/ # 도메인 모델
├── navigation/ # Navigator, NavKey 베이스
└── ui/ # 공통 UI 유틸 (MviIntentStore 등)
feature/{name}/
├── api/ # NavKey, navigate 확장함수
└── impl/ # Screen, ViewModel, Contract, Component
```

## MVI Pattern
- **State**: UI 상태 (`XxxState`)
- **Intent**: 사용자 액션 (`XxxIntent`)
- **Effect**: 일회성 이벤트 - Toast, Navigation 등 (`XxxEffect`)
- ViewModel에서 `MviIntentStore` 사용

## Naming Convention

### Files
- `XxxScreen.kt` (Route + Screen 함수)
- `XxxViewModel.kt`
- `XxxContract.kt` (State, Intent, Effect)
- `XxxNavKey.kt`, `XxxEntryProvider.kt`

### Variables
- Dialog/BottomSheet 표시: `isShowXxx`
- 클릭 Intent: `ClickXxx`
- 상태 변경 Intent: `ChangeXxx`
- 화면 진입 Intent: `EnterXxxScreen`
- Navigation 함수: `navigateToXxx()`
- 리소스 변수: `xxxRes`

## Code Style
- Indent: 4 spaces
- Trailing comma 사용
- ImmutableList 사용 (`kotlinx.collections.immutable`)

## Commit Message
```
[type] #issue-number: 설명
```
- `[feat]`, `[fix]`, `[docs]`, `[refactor]`, `[chore]`

## Build Commands
- 빌드: `./gradlew assembleDebug`
- Detekt: `./gradlew detekt`

## Custom Rules
<!-- 여기에 추가 규칙을 작성하세요 -->