Skip to content

[Feat#/75] feat(web): 홈 페이지 개발#77

Merged
seungdeok merged 1 commit into
mainfrom
feat/#75
Oct 16, 2025
Merged

[Feat#/75] feat(web): 홈 페이지 개발#77
seungdeok merged 1 commit into
mainfrom
feat/#75

Conversation

@seungdeok

@seungdeok seungdeok commented Oct 12, 2025

Copy link
Copy Markdown
Member

📝 PR 유형

  • 🚀 feature 기능 추가
  • 🐞 버그 발생
  • 🔨 리팩토링
  • 📋 문서작성
  • 🌍 빌드 설정 및 문제
  • ETC

📝 PR 설명

관련된 이슈 넘버

close #74

✅ 작업 목록

  • 컴포넌트 추가
    • Floating Action Button (FAB)
  • 기존 홈 페이지 구현을 @deprecated 폴더로 이동하여 보존
  • 새로운 간소화된 홈 페이지 구현

MR하기 전에 확인해주세요

  • local code lint 검사를 진행하셨나요?
  • loca ci test를 진행하셨나요?

📚 논의사항

📚 ETC

Summary by CodeRabbit

  • New Features

    • 홈 화면이 새 레이아웃으로 업데이트되었습니다: 상단 배너와 달력 추가
    • Daily / Meetings 탭 전환으로 일정 보기 유형을 쉽게 변경
    • 일정 카드 목록을 통해 일별/회의별 내용을 한눈에 확인
    • 플로팅 액션 버튼(FAB)으로 주요 작업에 빠르게 접근
  • Documentation

    • 홈 보기 관련 스토리북 스토리 추가로 컴포넌트 미리보기 및 테스트 개선

@seungdeok seungdeok changed the title feat(web): 홈 페이지 FAB 추가 feat(web): 홈 페이지 개발 Oct 12, 2025
@seungdeok seungdeok changed the title feat(web): 홈 페이지 개발 [Feat#/75] feat(web): 홈 페이지 개발 Oct 12, 2025
@coderabbitai

coderabbitai Bot commented Oct 12, 2025

Copy link
Copy Markdown

Walkthrough

앱 라우트가 HomePage 소스를 @/views/home/@deprecated로 변경했습니다. 기존 views/home/index.tsx는 최소 렌더로 단순화되었고, 새로운 클라이언트 HomePage 구현이 views/home/@deprecated/index.tsx에 추가되었습니다. 또한 views/home/home.stories.tsx가 추가되어 FAB 스토리가 정의되었습니다.

Changes

Cohort / File(s) Summary of changes
App 라우팅 소스 전환
apps/web/app/page.tsx
HomePage import 경로를 @/views/home에서 @/views/home/@deprecated로 변경.
Deprecated HomePage 추가(클라이언트 구현)
apps/web/src/views/home/@deprecated/index.tsx
useState로 탭 상태(Daily/Meetings) 관리, TopBanner/Calendar/Tabs 및 DailyCard/MeetingCard 리스트 렌더링, 정적 데이터 배열 정의, FAB 포함. export function HomePage() 추가.
Home 뷰 단순화
apps/web/src/views/home/index.tsx
기존 UI 구성, 상태, 데이터, 조건 렌더링 전면 제거. 단일 컨테이너에 "Home"만 렌더.
Storybook 스토리 추가
apps/web/src/views/home/home.stories.tsx
FAB 동작을 보여주는 스토리 추가. 메타 정의 및 아이콘 컴포넌트, 액션 구성. 기본/명명 스토리 내보냄.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  actor User as User
  participant App as Next.js App Router
  participant Page as app/page.tsx
  participant Home as @deprecated/HomePage
  participant Tabs as Tabs

  User->>App: 접속 / 로드
  App->>Page: page 컴포넌트 렌더
  Page->>Home: HomePage 렌더(import from @deprecated)
  Home->>Tabs: activeTab 및 setActiveTab 전달
  Tabs-->>Home: 탭 변경 이벤트
  Home->>Home: activeTab에 따라 Daily/Meetings 목록 렌더
  Note over Home: TopBanner, Calendar, FAB 포함
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • widse

Pre-merge checks and finishing touches

❌ Failed checks (2 warnings)
Check name Status Explanation Resolution
Description Check ⚠️ Warning PR 설명 섹션이 비어 있어 변경 내용과 목적이 구체적으로 설명되지 않았으며, 관련 이슈 번호가 실제 이슈(#75)와 불일치하여 명확한 참조가 이루어지지 않았습니다. “## 📝 PR 설명” 섹션에 이번 변경의 배경과 주요 작업 내용을 간결하게 기재하고 “## 관련된 이슈 넘버”를 실제 이슈 번호(#75)로 수정하여 올바른 참조를 제공해주세요.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (1 passed)
Check name Status Explanation
Title Check ✅ Passed 제목 “[Feat#/75] feat(web): 홈 페이지 개발”은 이번 변경의 핵심인 홈 페이지 기능 추가 및 리팩토링을 간결하게 요약하고 있어 주요 변경 사항과 잘 부합합니다. 제목은 불필요한 정보 없이 단일 문장으로 구성되어 있으며, 동료가 기록을 훑어볼 때 이 PR이 홈 페이지 기능 개발임을 즉시 이해할 수 있습니다.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/#75

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.

@seungdeok seungdeok requested a review from widse October 12, 2025 06:04
@seungdeok seungdeok self-assigned this Oct 12, 2025

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (4)
apps/web/src/views/home/index.tsx (1)

5-16: styled-system을 사용하여 일관성을 유지하세요.

인라인 스타일 대신 프로젝트 전체에서 사용 중인 styled-system/css를 사용하면 스타일 일관성이 향상됩니다.

다음 diff를 적용하여 styled-system으로 리팩토링하세요:

+"use client";
+
+import { css } from "styled-system/css";
+
 export function HomePage() {
   return (
     <div
-      style={{
+      className={css({
         display: "flex",
         flexDirection: "column",
         justifyContent: "center",
         alignItems: "center",
         height: "100vh",
-      }}
+      })}
     >
       <div>Home</div>
     </div>
   );
 }
apps/web/src/views/home/@deprecated/index.tsx (2)

76-76: 키로 배열 인덱스 사용을 피하세요.

배열 인덱스를 키로 사용하면 항목이 재정렬되거나 삽입/삭제될 때 React의 재조정 알고리즘이 비효율적으로 작동할 수 있습니다. 고유한 ID를 사용하는 것이 좋습니다.

DailySchedule 및 MeetingSchedule 인터페이스에 고유한 id 필드를 추가하고 이를 키로 사용하세요:

-              <li key={`schedule-card-${index.toString()}`}>
+              <li key={item.id}>
                 <DailyCard {...item} />
               </li>
-              <li key={`schedule-card-${index.toString()}`}>
+              <li key={item.id}>
                 <MeetingCard {...item} />
               </li>

Also applies to: 81-81


15-49: 목 데이터를 별도 파일로 추출하세요.

하드코딩된 목 데이터가 컴포넌트 내에 직접 정의되어 있습니다. 테스트 가능성과 유지보수성을 위해 별도의 상수 파일이나 픽스처 파일로 추출하는 것이 좋습니다.

예를 들어 apps/web/src/views/home/@deprecated/fixtures.ts 파일을 만들어 데이터를 분리할 수 있습니다:

// apps/web/src/views/home/@deprecated/fixtures.ts
export const DAILY_SCHEDULE_DATA: DailySchedule[] = [
  // ... 데이터
];

export const MEETING_SCHEDULE_DATA: MeetingSchedule[] = [
  // ... 데이터
];

그런 다음 컴포넌트에서 import하세요:

+import { DAILY_SCHEDULE_DATA, MEETING_SCHEDULE_DATA } from "./fixtures";
-
-const DAILY_SCHEDULE_DATA: DailySchedule[] = [
-  // ...
-];
-
-const MEETING_SCHEDULE_DATA: MeetingSchedule[] = [
-  // ...
-];
apps/web/src/views/home/home.stories.tsx (1)

6-44: 아이콘 컴포넌트를 공유 위치로 추출하세요.

인라인으로 정의된 아이콘 컴포넌트들이 다른 곳에서도 재사용될 가능성이 높습니다. 공유 아이콘 디렉토리로 추출하여 코드 중복을 방지하세요.

예를 들어 apps/web/src/shared/components/icons/ 디렉토리를 생성하고 각 아이콘을 별도 파일로 분리하세요:

// apps/web/src/shared/components/icons/OpenIcon.tsx
export function OpenIcon() {
  return (
    <svg xmlns="http://www.w3.org/2000/svg" width="21" height="20" viewBox="0 0 21 20" fill="none">
      <title>Open Icon</title>
      {/* ... */}
    </svg>
  );
}

그런 다음 import하여 사용하세요:

+import { OpenIcon } from "@/shared/components/icons/OpenIcon";
+import { CloseIcon } from "@/shared/components/icons/CloseIcon";
+import { AddIcon } from "@/shared/components/icons/AddIcon";
+import { FileIcon } from "@/shared/components/icons/FileIcon";
-
-const OpenIcon = () => (
-  // ...
-);
-// ... 기타 아이콘 정의 제거
📜 Review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 9115777 and 87ffd07.

📒 Files selected for processing (4)
  • apps/web/app/page.tsx (1 hunks)
  • apps/web/src/views/home/@deprecated/index.tsx (1 hunks)
  • apps/web/src/views/home/home.stories.tsx (1 hunks)
  • apps/web/src/views/home/index.tsx (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
apps/web/src/views/home/home.stories.tsx (2)
apps/web/src/views/home/index.tsx (1)
  • HomePage (3-17)
apps/web/src/shared/components/FloatingActionButton/FloatingActionButton.tsx (1)
  • FloatingActionButton (5-114)
apps/web/src/views/home/@deprecated/index.tsx (8)
apps/web/src/model/DailySchedule.ts (1)
  • DailySchedule (3-12)
apps/web/src/model/MeetingSchedule.ts (1)
  • MeetingSchedule (4-13)
apps/web/src/views/home/types.ts (1)
  • TabsState (47-47)
apps/web/src/widgets/home/TopBanner.tsx (1)
  • TopBanner (4-111)
apps/web/src/widgets/home/Calendar.tsx (1)
  • Calendar (3-33)
apps/web/src/widgets/shared/DailyCard.tsx (1)
  • DailyCard (9-127)
apps/web/src/widgets/shared/MeetingCard.tsx (1)
  • MeetingCard (50-226)
apps/web/src/shared/components/FAB.tsx (1)
  • FAB (12-108)
🔇 Additional comments (1)
apps/web/app/page.tsx (1)

1-1: deprecated 경로 사용에 대한 마이그레이션 계획을 명확히 하세요.

애플리케이션이 @deprecated 폴더의 컴포넌트를 라우팅하고 있습니다. 이는 임시 조치로 보이지만, 새로운 간소화된 HomePage로 마이그레이션하는 명확한 계획이나 타임라인이 없습니다.

다음을 확인해 주세요:

  1. 언제 새로운 간소화된 HomePage로 전환할 계획인가요?
  2. deprecated 폴더 사용에 대한 문서나 주석이 필요한가요?
  3. 이 임시 라우팅을 추적하는 이슈가 있나요?

Comment thread apps/web/src/views/home/@deprecated/index.tsx
Comment thread apps/web/src/views/home/home.stories.tsx
Comment thread apps/web/app/page.tsx
@seungdeok seungdeok merged commit 6f1c3bb into main Oct 16, 2025
3 of 4 checks passed
@coderabbitai coderabbitai Bot mentioned this pull request Oct 24, 2025
8 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[due date: 10/14] [✨ Feature] 인증 화면 개발

2 participants