Skip to content

[FEAT/#83] 챌린지 시작 뷰 온보딩 구현 #88

Merged
hyeminililo merged 7 commits intodevelopfrom
feat/#83-challenge-start-view
Jan 19, 2026
Merged

[FEAT/#83] 챌린지 시작 뷰 온보딩 구현 #88
hyeminililo merged 7 commits intodevelopfrom
feat/#83-challenge-start-view

Conversation

@hyeminililo
Copy link
Copy Markdown
Contributor

@hyeminililo hyeminililo commented Jan 18, 2026

Related issue 🛠

Work Description ✏️

챌린지 시작 뷰 온보딩 부분 구현했습니다. 다음 버튼을 누르면 넘어가도록 구현했습니다 !!

Screenshot 📸

image

Uncompleted Tasks 😅

  • N/A

To Reviewers 📢

소희언니 것을 많이 참고 했는데 ,,ㅎㅎ 챌린지 시작 뷰 구현했습니다. 빠르게 답변해주세요 ~~! !

Summary by CodeRabbit

새로운 기능

  • 챌린지 시작 화면이 새로 추가되었습니다. 챌린지의 제목, 설명 이미지, 상세 정보 및 안내 텍스트를 시각적으로 표시합니다. 사용자는 다음 버튼을 통해 챌린지의 다음 단계로 쉽게 진행할 수 있으며, 정보 아이콘이 추가 설명을 제공합니다. 통일된 테마 스타일로 디자인되었습니다.

✏️ Tip: You can customize this high-level summary in your review settings.

@hyeminililo hyeminililo self-assigned this Jan 18, 2026
@hyeminililo hyeminililo requested a review from a team as a code owner January 18, 2026 18:05
@hyeminililo hyeminililo added FEAT✨ 새로운 기능 구현 혜민🍒 혜민 담당 labels Jan 18, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jan 18, 2026

Warning

Rate limit exceeded

@hyeminililo has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 0 minutes and 30 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 773aaee and c7cff5b.

📒 Files selected for processing (1)
  • app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt

Walkthrough

새로운 챌린지 스타트 화면을 추가합니다. Jetpack Compose를 사용한 UI 화면(ChallengeStartScreen), Hilt 기반의 ViewModel(ChallengeStartViewModel), 그리고 정보 아이콘 벡터 드로어블 리소스를 포함합니다.

Changes

응집 집단 / 파일 변경 요약
챌린지 스타트 UI 구현
app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt
공개 라우트 함수 ChallengeStartRoute와 개인 화면 컴포저블 ChallengeStartScreen 추가. Hilt를 통한 ViewModel 연결, 제목, 이미지, 정보 행과 "다음" 버튼으로 구성된 세로 레이아웃 구현. 부분 컴포저블 ChallengeStartInfo, ChallengeStartTitle 및 프리뷰 함수 포함
챌린지 스타트 ViewModel
app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartViewModel.kt
Hilt 의존성 주입 설정이 적용된 ChallengeStartViewModel 클래스 추가. 빈 구현의 onNextClick() 메서드 포함
챌린지 정보 아이콘 리소스
app/src/main/res/drawable/ic_challenge_info.xml
24x24 dp 크기의 벡터 드로어블 리소스 추가. 원형 획(stroke) 및 정보 기호의 중앙 요소로 구성

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • nhyeonii
  • sohee6989
  • usuuhyn
🚥 Pre-merge checks | ✅ 4 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 챌린지 시작 뷰 온보딩 구현이라는 변경사항의 주요 내용을 명확하게 반영하고 있습니다.
Linked Issues check ✅ Passed 변경사항이 이슈 #83의 모든 요구사항을 충족합니다: 다음 버튼 활성화 구현 및 challenge_start 화면 구현 완료.
Out of Scope Changes check ✅ Passed 모든 변경사항이 이슈 #83의 챌린지 시작 뷰 UI 구현 범위 내에 있으며 관련 없는 변경사항은 없습니다.
Description check ✅ Passed PR 설명이 제공된 템플릿의 필수 섹션을 포함하고 있으며, 이슈 번호, 작업 내용, 스크린샷, 완료 상태, 검토자 메모가 모두 포함되어 있습니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt`:
- Around line 45-51: The Column's modifier applies padding(horizontal = 17.dp)
before the Scaffold's paddingValues, which can cause system bars to overlap
content; in the ChallengeStartScreen composable reorder the modifier chain so
paddingValues is applied first (e.g.,
modifier.padding(paddingValues).padding(horizontal = 17.dp).fillMaxSize() or
equivalent) — update the Column's modifier usage to call padding(paddingValues)
before any additional padding.
🧹 Nitpick comments (2)
app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartViewModel.kt (1)

10-11: 빈 함수에 TODO 주석 또는 구현 추가 권장

onNextClick()이 현재 비어있어 static analysis에서 경고가 발생합니다. 온보딩 "다음" 버튼의 목적을 고려할 때, 네비게이션 로직이나 상태 업데이트가 필요해 보입니다.

♻️ 제안: TODO 주석 추가 또는 네비게이션 이벤트 구현
 `@HiltViewModel`
 class ChallengeStartViewModel `@Inject` constructor() :
     ViewModel() {
+    // TODO: 다음 온보딩 화면으로 네비게이션 로직 구현
     fun onNextClick() {
     }
 }

또는 향후 확장을 위해 네비게이션 이벤트 패턴을 고려해보세요:

`@HiltViewModel`
class ChallengeStartViewModel `@Inject` constructor() : ViewModel() {
    
    private val _navigateToNext = MutableSharedFlow<Unit>()
    val navigateToNext: SharedFlow<Unit> = _navigateToNext.asSharedFlow()
    
    fun onNextClick() {
        viewModelScope.launch {
            _navigateToNext.emit(Unit)
        }
    }
}
app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt (1)

83-99: 아이콘과 텍스트 사이 간격 추가 권장

IconText 사이에 간격이 없어 UI가 붙어 보일 수 있습니다.

♻️ Spacer 추가 제안
         Icon(
             imageVector = ImageVector.vectorResource(id = R.drawable.ic_challenge_info),
             contentDescription = null,
             tint = CherrishTheme.colors.gray600
         )
 
+        Spacer(modifier = Modifier.width(4.dp))
+
         Text(
             text = "이 챌린지는 설정 시점부터 7일간 진행됩니다.",
             color = CherrishTheme.colors.gray600,
             style = CherrishTheme.typography.body3M12
         )

또는 RowArrangement.spacedBy(4.dp)를 사용할 수도 있습니다.

Comment on lines +45 to +51
Column(
modifier = modifier
.fillMaxSize()
.padding(horizontal = 17.dp)
.padding(paddingValues)

) {
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot Jan 18, 2026

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

패딩 적용 순서 수정 필요

paddingValuespadding(horizontal: 17.dp) 이후에 적용되어 있습니다. 학습된 패턴에 따르면, Scaffold의 paddingValues를 먼저 적용해야 시스템 바(상태바/네비게이션 바)와 콘텐츠가 겹치지 않습니다.

🐛 패딩 순서 수정
     Column(
         modifier = modifier
             .fillMaxSize()
-            .padding(horizontal = 17.dp)
             .padding(paddingValues)
+            .padding(horizontal = 17.dp)
 
     ) {

Based on learnings, paddingValues를 root container의 modifier에 먼저 적용한 후 추가 패딩을 적용해야 합니다.

📝 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
Column(
modifier = modifier
.fillMaxSize()
.padding(horizontal = 17.dp)
.padding(paddingValues)
) {
Column(
modifier = modifier
.fillMaxSize()
.padding(paddingValues)
.padding(horizontal = 17.dp)
) {
🤖 Prompt for AI Agents
In
`@app/src/main/java/com/cherrish/android/presentation/challenge/start/ChallengeStartScreen.kt`
around lines 45 - 51, The Column's modifier applies padding(horizontal = 17.dp)
before the Scaffold's paddingValues, which can cause system bars to overlap
content; in the ChallengeStartScreen composable reorder the modifier chain so
paddingValues is applied first (e.g.,
modifier.padding(paddingValues).padding(horizontal = 17.dp).fillMaxSize() or
equivalent) — update the Column's modifier usage to call padding(paddingValues)
before any additional padding.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

아니 ? 이게 맞다 그랫서

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

@hyeminililo 네, 알겠습니다! 제가 제안한 내용은 이전 PR #41에서의 학습 내용을 기반으로 한 것이었습니다:

"Screen composables that receive a paddingValues: PaddingValues parameter from Scaffold must apply it to their root container's modifier (e.g., .padding(paddingValues)) before applying additional padding"

하지만 현재 코드가 의도적으로 이 순서로 작성된 것이라면 괜찮습니다. 혹시 현재 순서(horizontal padding → paddingValues)를 사용하는 특별한 이유가 있으신가요?

예를 들어:

  • 특정 디자인 요구사항
  • 테스트 결과 현재 순서가 더 잘 동작함
  • 다른 팀 컨벤션

이유를 공유해주시면 향후 리뷰에 참고하도록 하겠습니다! 😊


🧠 Learnings used
Learnt from: nhyeonii
Repo: TEAM-Cherrish/Cherrish-Android PR: 41
File: app/src/main/java/com/cherrish/android/presentation/challenge/ChallengeScreen.kt:30-39
Timestamp: 2026-01-12T19:49:33.128Z
Learning: In the Cherrish-Android codebase, Screen composables that receive a `paddingValues: PaddingValues` parameter from Scaffold must apply it to their root container's modifier (e.g., `.padding(paddingValues)`) before applying additional padding, to avoid layout overlap with system bars.

Copy link
Copy Markdown
Contributor

@nhyeonii nhyeonii left a comment

Choose a reason for hiding this comment

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

고생하셧습니다 말씀드린 패딩 확인해주세요 !

Copy link
Copy Markdown
Contributor

@usuuhyn usuuhyn left a comment

Choose a reason for hiding this comment

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

수고하셨습니당 혜민띠 화이팅 ~~!!!!!
076085d7c4c23f655e06bcabd5ace8b4

@hyeminililo hyeminililo merged commit b618fed into develop Jan 19, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

FEAT✨ 새로운 기능 구현 혜민🍒 혜민 담당

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] 챌린지 스타트 뷰 UI 구현

3 participants