Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 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
14 changes: 14 additions & 0 deletions .coderabbit.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
language: "ko-KR"
early_access: false
reviews:
profile: "assertive"
request_changes_workflow: true
high_level_summary: true
poem: false
review_status: true
collapse_walkthrough: true
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

리뷰 섹션 기본 설정은 유효하지만, commit_status 명시를 권장합니다.
현재 reviews 아래 commit_status가 빠져있어 기본값(true)이 적용됩니다. CI 파이프라인 상태 관리를 명확히 하기 위해 commit_status: true를 추가하는 것을 고려해 보세요.

🤖 Prompt for AI Agents
In the .coderabbit.yaml file around lines 3 to 9, the reviews section is missing
the explicit commit_status setting. To clearly manage CI pipeline status, add
the line commit_status: true under the reviews section to explicitly enable
commit status reporting instead of relying on the default value.

auto_review:
enabled: true
drafts: false
chat:
auto_reply: true
13 changes: 13 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
root = true

[*]
charset = utf-8
indent_size = 4
indent_style = space
max_line_length = 150
insert_final_newline = true
trim_trailing_whitespace = true

[*.{kt,kts}]
ij_kotlin_allow_trailing_comma = true
ij_kotlin_allow_trailing_comma_on_call_site = true
47 changes: 47 additions & 0 deletions .github/workflows/android-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: Android CI

env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false"
GRADLE_BUILD_ACTION_CACHE_DEBUG_ENABLED: true

on:
pull_request:

concurrency:
group: build-${{ github.ref }}
cancel-in-progress: true

jobs:
ci-build:
runs-on: ubuntu-latest

if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-ci') }}

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 17

Comment thread
coderabbitai[bot] marked this conversation as resolved.
- name: Setup Android SDK
uses: android-actions/setup-android@v2

- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true

Comment on lines +20 to +37
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

들여쓰기 후 하이픈 뒤 공백이 3칸(- )으로 lint 오류 발생

YAML 스펙에는 문제없지만 actionlint / yamllint 경고가 계속 출력됩니다.
전반적으로 - 한 칸으로 맞추면 경고를 깔끔하게 제거할 수 있습니다.

🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 21-21: too many spaces after hyphen

(hyphens)


[error] 24-24: too many spaces after hyphen

(hyphens)


[error] 30-30: too many spaces after hyphen

(hyphens)


[error] 33-33: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml between lines 20 and 37, the indentation
after hyphens uses three spaces which triggers lint warnings from actionlint and
yamllint. To fix this, adjust all list item hyphens to be followed by a single
space instead of three spaces throughout these lines to comply with linting
rules and remove the warnings.

- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties

Comment on lines +39 to +41
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Secrets가 문자열 그대로 출력됩니다 – 따옴표를 제거하세요.

echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
작업 스크립트 내부에서 단일 따옴표로 감싸면 GitHub Actions 템플릿 치환이 일어나지 않아 파일에 리터럴 \${{ secrets.LOCAL_PROPERTIES }} 문자열이 기록됩니다.
빌드 시 local.properties 가 제대로 주입되지 않아 CI 전부가 실패할 수 있습니다.

-echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+echo "${{ secrets.LOCAL_PROPERTIES }}" > ./local.properties

• 따옴표를 이중 따옴표로 바꾸고 > 를 사용해 불필요한 중복 추가를 방지하세요.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
run: |
- echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+ echo "${{ secrets.LOCAL_PROPERTIES }}" > ./local.properties
🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml around lines 39 to 41, the secret
LOCAL_PROPERTIES is enclosed in single quotes, causing the literal string '${{
secrets.LOCAL_PROPERTIES }}' to be written instead of its value. Replace the
single quotes with double quotes and use a single '>' redirection operator to
write the secret's actual content to local.properties without appending
duplicates.

Comment on lines +38 to +41
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

local.properties 생성 시 >> 대신 > 사용 권장

>> 는 파일이 이미 존재할 경우 뒤에 덧붙여 중복 키를 만들 수 있습니다.
한 번만 작성되는 CI 컨텍스트라면 단순 > 로 덮어쓰는 편이 안전합니다.

-                    echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
+                    echo '${{ secrets.LOCAL_PROPERTIES }}' >  ./local.properties
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' > ./local.properties
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 38-38: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml around lines 38 to 41, the script uses '>>'
to append to local.properties, which can cause duplicate entries if the file
exists. Replace '>>' with '>' to overwrite the file instead, ensuring
local.properties is created cleanly each time without duplicate keys.

- name: Code style checks
run: |
./gradlew ktlintCheck detekt

- name: Run build
Comment on lines +21 to +46
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

YAML 스타일: - 뒤 공백을 한 칸으로 줄여 가독성을 높이세요.

- name: 처럼 하이픈 뒤에 3 칸 이상 공백이 있어 YAMLlint 오류가 발생합니다. 표준 예시:

-            -   name: Checkout
+            - name: Checkout

모든 step‐블록에 동일하게 적용해 경고를 제거할 수 있습니다.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Code style checks
run: |
./gradlew ktlintCheck detekt
- name: Run build
- name: Checkout
uses: actions/checkout@v4
- name: Setup JDK 17
uses: actions/setup-java@v4
with:
distribution: 'corretto'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v2
- name: Setup Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-home-cache-cleanup: true
- name: Generate local.properties
run: |
echo '${{ secrets.LOCAL_PROPERTIES }}' >> ./local.properties
- name: Code style checks
run: |
./gradlew ktlintCheck detekt
- name: Run build
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 21-21: too many spaces after hyphen

(hyphens)


[error] 24-24: too many spaces after hyphen

(hyphens)


[error] 30-30: too many spaces after hyphen

(hyphens)


[error] 33-33: too many spaces after hyphen

(hyphens)


[error] 38-38: too many spaces after hyphen

(hyphens)


[error] 42-42: too many spaces after hyphen

(hyphens)


[error] 46-46: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml from lines 21 to 46, the YAML syntax uses
multiple spaces after the dash in step definitions (e.g., '-   name:'), causing
YAML lint errors. Fix this by reducing the spaces after each dash to exactly one
space (e.g., '- name:') for all steps to improve readability and comply with
YAML standards.

run: ./gradlew buildDebug --stacktrace
Comment on lines +46 to +47
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

buildDebug 태스크는 존재하지 않을 가능성이 높습니다.

AGP 기본 태스크는 assembleDebug / bundleDebug 또는 상위 build 입니다.
./gradlew buildDebug 는 실패하여 CI 전체가 RED 로 끝날 수 있으니 확인 바랍니다.

-            -   name: Run build
-                run: ./gradlew buildDebug --stacktrace
+            -   name: Assemble debug APK
+                run: ./gradlew assembleDebug --stacktrace
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- name: Run build
run: ./gradlew buildDebug --stacktrace
- name: Assemble debug APK
run: ./gradlew assembleDebug --stacktrace
🧰 Tools
🪛 YAMLlint (1.37.1)

[error] 46-46: too many spaces after hyphen

(hyphens)

🤖 Prompt for AI Agents
In .github/workflows/android-ci.yml at lines 46 to 47, the current Gradle task
'buildDebug' likely does not exist and may cause the CI to fail. Replace
'buildDebug' with a valid task such as 'assembleDebug', 'bundleDebug', or simply
'build' to ensure the build step runs successfully without errors.

44 changes: 13 additions & 31 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,41 +1,24 @@
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.compose)
alias(libs.plugins.booket.android.application)
alias(libs.plugins.booket.android.hilt)
alias(libs.plugins.booket.android.application.compose)
}

android {
namespace = "com.ninecraft.booket"
compileSdk = 35

defaultConfig {
applicationId = "com.ninecraft.booket"
minSdk = 28
targetSdk = 35
versionCode = 1
versionName = "1.0"

testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

buildTypes {
release {
isMinifyEnabled = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
"proguard-rules.pro",
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}

buildFeatures {
compose = true
buildConfig = true
}
}

Expand All @@ -45,15 +28,14 @@ dependencies {
implementation(libs.androidx.lifecycle.runtime.ktx)
implementation(libs.androidx.activity.compose)
implementation(platform(libs.androidx.compose.bom))
implementation(libs.androidx.ui)
implementation(libs.androidx.ui.graphics)
implementation(libs.androidx.ui.tooling.preview)
implementation(libs.androidx.material3)
implementation(libs.androidx.compose.ui)
implementation(libs.androidx.compose.ui.graphics)
implementation(libs.androidx.compose.ui.tooling.preview)
implementation(libs.androidx.compose.material3)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
androidTestImplementation(platform(libs.androidx.compose.bom))
androidTestImplementation(libs.androidx.ui.test.junit4)
debugImplementation(libs.androidx.ui.tooling)
debugImplementation(libs.androidx.ui.test.manifest)
androidTestImplementation(libs.androidx.compose.ui.test.junit4)
debugImplementation(libs.androidx.compose.ui.tooling)
debugImplementation(libs.androidx.compose.ui.test.manifest)
}

This file was deleted.

34 changes: 0 additions & 34 deletions app/src/main/java/com/ninecraft/booket/ui/theme/Type.kt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class MainActivity : ComponentActivity() {
Scaffold(modifier = Modifier.fillMaxSize()) { innerPadding ->
Greeting(
name = "Android",
modifier = Modifier.padding(innerPadding)
modifier = Modifier.padding(innerPadding),
)
}
}
Expand All @@ -34,7 +34,7 @@ class MainActivity : ComponentActivity() {
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
modifier = modifier,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ val Pink80 = Color(0xFFEFB8C8)

val Purple40 = Color(0xFF6650a4)
val PurpleGrey40 = Color(0xFF625b71)
val Pink40 = Color(0xFF7D5260)
val Pink40 = Color(0xFF7D5260)
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.ninecraft.booket.ui.theme

import android.app.Activity
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.MaterialTheme
Expand All @@ -14,31 +13,32 @@ import androidx.compose.ui.platform.LocalContext
private val DarkColorScheme = darkColorScheme(
primary = Purple80,
secondary = PurpleGrey80,
tertiary = Pink80
tertiary = Pink80,
)

private val LightColorScheme = lightColorScheme(
primary = Purple40,
secondary = PurpleGrey40,
tertiary = Pink40
tertiary = Pink40,

/* Other default colors to override
background = Color(0xFFFFFBFE),
surface = Color(0xFFFFFBFE),
onPrimary = Color.White,
onSecondary = Color.White,
onTertiary = Color.White,
onBackground = Color(0xFF1C1B1F),
onSurface = Color(0xFF1C1B1F),
*/
/*
* Other default colors to override
* background = Color(0xFFFFFBFE),
* surface = Color(0xFFFFFBFE),
* onPrimary = Color.White,
* onSecondary = Color.White,
* onTertiary = Color.White,
* onBackground = Color(0xFF1C1B1F),
* onSurface = Color(0xFF1C1B1F),
*/
Comment on lines +24 to +33
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

주석 블록이 Theme 객체 외부로 밀려 있습니다.

/* ... */ 주석이 컬러스킴 파라미터 블록과 동일한 들여쓰기로 유지되면 가독성이 조금 더 좋습니다. 코드 동작에는 영향 없지만 살짝 정렬해 두면 ktlint warning 을 방지할 수 있습니다.

🤖 Prompt for AI Agents
In app/src/main/kotlin/com/ninecraft/booket/ui/theme/Theme.kt around lines 24 to
33, the block comment containing default color overrides is indented outside the
Theme object or color scheme parameter block. Adjust the indentation of the /*
... */ comment block to align with the surrounding color scheme parameters to
improve readability and prevent ktlint warnings, ensuring the comment is
visually grouped with the related code.

Comment on lines +24 to +33
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

사용되지 않는 색상 주석 블록 관리 제안

현재 주석으로 남긴 override 컬러 목록은 초기 템플릿 용도입니다. 실제 사용되지 않는다면 제거하거나 TODO로 관리하여 코드 가독성을 높이세요.

🤖 Prompt for AI Agents
In app/src/main/kotlin/com/ninecraft/booket/ui/theme/Theme.kt around lines 24 to
33, there is a commented-out block of default color overrides that are not
currently used. To improve code readability, either remove this unused comment
block or convert it into a TODO comment indicating it is a placeholder for
potential future overrides.

)

@Composable
fun BooketAndroidTheme(
darkTheme: Boolean = isSystemInDarkTheme(),
// Dynamic color is available on Android 12+
dynamicColor: Boolean = true,
content: @Composable () -> Unit
content: @Composable () -> Unit,
) {
val colorScheme = when {
dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
Expand All @@ -53,6 +53,6 @@ fun BooketAndroidTheme(
MaterialTheme(
colorScheme = colorScheme,
typography = Typography,
content = content
content = content,
)
}
35 changes: 35 additions & 0 deletions app/src/main/kotlin/com/ninecraft/booket/ui/theme/Type.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.ninecraft.booket.ui.theme

import androidx.compose.material3.Typography
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.sp

// Set of Material typography styles to start with
val Typography = Typography(
bodyLarge = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 16.sp,
lineHeight = 24.sp,
letterSpacing = 0.5.sp,
),
Comment on lines +10 to +17
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

변수명 컨벤션: Typography 대신 lowerCamelCase 사용 권장

Kotlin 최상위 프로퍼티는 대체로 소문자로 시작하므로 val Typography는 타입과 혼동될 수 있습니다. val booketTypography 또는 val typography 등의 네이밍 변경을 고려하세요.

🤖 Prompt for AI Agents
In app/src/main/kotlin/com/ninecraft/booket/ui/theme/Type.kt around lines 10 to
17, the variable name 'Typography' uses an uppercase first letter which can be
confused with a type name. Rename this variable to follow Kotlin's
lowerCamelCase convention, such as 'typography' or 'booketTypography', to
clearly distinguish it from types and adhere to Kotlin naming standards.

/*
* Other default text styles to override
* titleLarge = TextStyle(
* fontFamily = FontFamily.Default,
* fontWeight = FontWeight.Normal,
* fontSize = 22.sp,
* lineHeight = 28.sp,
* letterSpacing = 0.sp,
* ),
* labelSmall = TextStyle(
* fontFamily = FontFamily.Default,
* fontWeight = FontWeight.Medium,
* fontSize = 11.sp,
* lineHeight = 16.sp,
* letterSpacing = 0.5.sp,
* )
*/
Comment on lines +18 to +34
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

주석 처리된 텍스트 스타일 블록 관리 제안

향후 커스터마이징을 위해 남겨두신 템플릿 코드입니다만, 현재 사용되지 않는다면 TODO 주석 추가 혹은 별도 템플릿 파일로 이동하여 코드베이스를 간결하게 유지하는 것을 권장합니다.

🤖 Prompt for AI Agents
In app/src/main/kotlin/com/ninecraft/booket/ui/theme/Type.kt around lines 18 to
34, the commented-out text style block is currently unused. To keep the codebase
clean and maintainable, either add a TODO comment indicating it is a placeholder
for future customization or move this template code to a separate file dedicated
to style templates.

)
Comment on lines +9 to +35
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

기본 Typography 정의 추가 확인

Compose 기본 서체를 그대로 사용하므로 향후 브랜드 폰트로 교체하는 TODO 남겨두면 좋겠습니다. 기능적으로 문제 없습니다.

🤖 Prompt for AI Agents
In app/src/main/kotlin/com/ninecraft/booket/ui/theme/Type.kt around lines 9 to
35, add a TODO comment indicating that the current Typography uses the default
Compose font and should be replaced with the brand font in the future. This will
help track the planned font update while keeping the current functionality
unchanged.

17 changes: 0 additions & 17 deletions app/src/test/java/com/ninecraft/booket/ExampleUnitTest.kt

This file was deleted.

Loading
Loading