- Feelin Android app. Single-module
:app, Kotlin + Compose + Hilt + Retrofit + DataStore. - Runtime entry:
FeelinApplication->MainActivity->navigation/FeelinNavHost.kt.
./
βββ app/ # only Android module
β βββ src/main/java/com/lyrics/feelin/
β β βββ core/ # shared data, domain, design system
β β βββ navigation/ # app graph + destinations
β β βββ presentation/view/ # feature screens
β β βββ presentation/designsystem/ # theme + CompositionLocal
β β βββ util/ # small extensions
β βββ detekt.yml # enforced quality rules
βββ gradle/libs.versions.toml # dependency source of truth
βββ .github/workflows/android-ci.yml # detekt -> assembleDebug
βββ specdocument/ # feature specs, not runtime code
./AGENTS.md- repo-wide rules, build, quality gates, shared architecture.app/src/main/java/com/lyrics/feelin/core/AGENTS.md- shared layer rules.app/src/main/java/com/lyrics/feelin/presentation/view/AGENTS.md- feature-screen rules.app/src/main/java/com/lyrics/feelin/presentation/view/onboarding/AGENTS.md- multi-step onboarding flow.app/src/main/java/com/lyrics/feelin/presentation/view/mypage/AGENTS.md- profile/settings area.
| Task | Location | Notes |
|---|---|---|
| App startup | app/src/main/java/com/lyrics/feelin/FeelinApplication.kt |
Kakao SDK init, Hilt app |
| Root UI entry | app/src/main/java/com/lyrics/feelin/MainActivity.kt |
FeelinTheme + FeelinNavHost() |
| Navigation flow | app/src/main/java/com/lyrics/feelin/navigation/FeelinNavHost.kt |
onboarding/main graph split |
| Shared data/auth | app/src/main/java/com/lyrics/feelin/core/data/ |
repository, datasource, interceptor, manager |
| Shared models | app/src/main/java/com/lyrics/feelin/core/domain/model/ |
auth/profile/signup models |
| Reusable UI | app/src/main/java/com/lyrics/feelin/core/designsystem/ |
common Compose components/icons |
| Theme tokens | app/src/main/java/com/lyrics/feelin/presentation/designsystem/theme/ |
LocalFeelinColors, theme wiring |
| Feature screens | app/src/main/java/com/lyrics/feelin/presentation/view/ |
login, onboarding, mypage, note, community |
| Build/deps | app/build.gradle.kts, gradle/libs.versions.toml |
versions, plugins, Kakao key rules |
| CI | .github/workflows/android-ci.yml |
detekt must pass before build |
- All responses and local docs: Korean.
- Commit messages: English only,
prefix: Subjectformat. Prefixes:init,feat,docs,build,design,fix,chore,refactor,ci,test. - Commit subject: imperative, no trailing period, preferably <= 50 chars.
- After Kotlin/code edits, always run
./gradlew detektbefore finishing work. - If changes affect build config, app startup, or navigation flow, also run
./gradlew :app:assembleDebug. - If you are running under WSL, execute Gradle verification via
cmd.exe /c gradlew.bat ...instead of invoking./gradlewdirectly. - Compose:
- include
modifier: Modifier = Modifieron composables that render UI. - keep
modifieras first optional parameter. - keep lambda parameters last.
- use project theme tokens via
LocalFeelinColors.
- include
- Lint/formatting source of truth:
app/detekt.yml. - CI shape:
detektfirst, then:app:assembleDebug.
- Do not run
detektFormat; this repo uses./gradlew detekt. - Do not remove
@OptIn(...)or related experimental imports even if they look unused. - Do not replace theme access with ad-hoc colors when
LocalFeelinColorsalready covers it. - Do not bypass repo conventions with Korean commit messages or vague subjects like
update code. - Do not treat style-only feedback as the main review target; CodeRabbit already delegates style to detekt.
settings.gradle.ktsusesRepositoriesMode.FAIL_ON_PROJECT_REPOSand adds Kakao Maven repo.app/build.gradle.ktsfails fast if Kakao native key is missing locally and in env.- Compose detekt rules are intentionally tuned:
@Composable/@Previewget complexity exceptions;modifieris an allowed unused parameter. presentation/designsystem/theme/Theme.ktowns CompositionLocal provisioning. Keep new global UI tokens there.
./gradlew detekt
./gradlew :app:assembleDebug
./gradlew testDebugUnitTest
./gradlew connectedDebugAndroidTest- Only real tests in repo are generated examples under
app/src/testandapp/src/androidTest; most app areas are still lightly tested. coderabbit.yamlasks reviews to focus on correctness, lifecycle, coroutine, Compose state, and performance risks rather than formatting.CLAUDE.mdintentionally points back to this file.