Skip to content

Feat(client, landing): footer 구현#220

Merged
constantly-dev merged 4 commits intodevelopfrom
feat/#217/landing-footer
Dec 22, 2025
Merged

Feat(client, landing): footer 구현#220
constantly-dev merged 4 commits intodevelopfrom
feat/#217/landing-footer

Conversation

@constantly-dev
Copy link
Member

@constantly-dev constantly-dev commented Dec 19, 2025

📌 Related Issues

관련된 Issue를 태그해주세요. (e.g. - close #25)

📄 Tasks

  • landing & onboarding page footer 구현

📷 Screenshot

image image

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능
    • 온보딩 및 랜딩 페이지에 푸터 컴포넌트 추가
    • 푸터에 약관, 개인정보 보호 정책, 연락처 정보 및 현재 연도 저작권 표시 포함
    • 소셜 미디어 링크(인스타그램, 팔스 블로그) 추가
    • 페이지 레이아웃을 수직 구조로 개선

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

@vercel
Copy link

vercel bot commented Dec 19, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
pinback-client-client Ready Ready Preview, Comment Dec 19, 2025 6:45am
pinback-client-landing Ready Ready Preview, Comment Dec 19, 2025 6:45am

@github-actions github-actions bot added the feat 기능 개발하라 개발 달려라 달려 label Dec 19, 2025
@coderabbitai
Copy link

coderabbitai bot commented Dec 19, 2025

Walkthrough

온보딩 및 랜딩 페이지에 새로운 Footer 컴포넌트를 추가하고, 페이지 레이아웃을 수직 스택 구조로 재구성했습니다. 디자인 시스템에 'instagram'과 'palms' 아이콘을 추가하여 Footer에서 소셜 링크 렌더링을 지원합니다.

Changes

Cohort / File(s) Summary
온보딩 페이지 Footer 통합
apps/client/src/pages/onBoarding/OnBoarding.tsx, apps/client/src/pages/onBoarding/components/footer/Footer.tsx
OnBoarding 페이지에 Footer 컴포넌트를 임포트 및 추가하고, 외부 컨테이너를 flex-col로 변경하여 수직 레이아웃(헤더, 메인 카드, Footer)으로 재구성했습니다. 새로운 Footer는 이용약관/개인정보 링크, 연락처 정보, 저작권, 소셜 링크(인스타그램, palms)를 포함합니다.
랜딩 페이지 Footer 통합
apps/landing/src/components/FinalCTASection.tsx, apps/landing/src/components/Footer.tsx
FinalCTASection을 래퍼 div로 감싸 상단 고정 Footer를 추가하고 레이아웃을 재구성했습니다. 버튼에 size="large" 속성을 추가하고 간격을 조정했습니다. 새로운 Footer 컴포넌트는 로고, 법무 링크, 연락처 블록, 저작권, 소셜 링크를 렌더링합니다.
디자인 시스템 아이콘 확장
packages/design-system/src/icons/iconNames.ts
Footer 컴포넌트에서 소셜 링크를 렌더링하기 위해 'instagram'과 'palms' 아이콘 이름을 iconNames 배열에 추가했습니다.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • 검토 포인트:
    • 두 개의 새로운 Footer 컴포넌트(온보딩/랜딩)의 접근성 속성(aria-label) 및 외부 링크 속성(rel) 검증 필요
    • 온보딩 및 랜딩 페이지의 레이아웃 변경이 기존 요소들과 올바르게 상호작용하는지 확인
    • Footer 컴포넌트 간의 코드 중복 검토 (두 버전이 일부 기능을 공유하는지 확인)

Possibly related PRs

Suggested labels

🛠️ Feature, feat

Suggested reviewers

  • jllee000
  • jjangminii
  • karnelll

Poem

🐰 발자국 따라 Footer 내려와,
온보딩부터 랜딩까지 춤을 춰요.
소셜 링크 반짝이고,
아이콘들 손을 맞춰요.
페이지마다 예쁜 마무리! ✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Linked Issues check ⚠️ Warning PR은 #217 footer 구현 요구사항을 충족하지만, #25 progress bar 컴포넌트와는 무관합니다. 링크된 이슈 #25는 progress bar 구현에 관한 것으로 이 PR과 무관합니다. 올바른 이슈 번호 확인 및 수정이 필요합니다.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed 제목은 랜딩페이지와 온보딩 페이지 footer 구현이라는 주요 변화를 명확하게 요약하고 있습니다.
Description check ✅ Passed PR 설명에서 필수 섹션(Related Issues, Tasks, Screenshot)이 모두 포함되어 있으며 요구사항을 충족합니다.
Out of Scope Changes check ✅ Passed Footer 컴포넌트 구현 외에도 design-system의 iconNames에 instagram, palms 아이콘이 추가되었으나 이는 footer 기능을 위한 필수 변경입니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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/#217/landing-footer

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.

@github-actions
Copy link

✅ Storybook chromatic 배포 확인:
🐿️ storybook

Copy link

@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: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/design-system/src/icons/iconNames.ts (1)

1-1: 자동 생성 파일을 수동으로 수정하고 있습니다.

파일 최상단의 주석에 "이 파일은 자동 생성 파일입니다. (직접 수정 금지)"라고 명시되어 있지만, 'instagram'과 'palms' 아이콘 이름이 수동으로 추가되고 있습니다.

다음 중 하나의 방법으로 해결해주세요:

  • 아이콘 생성 프로세스를 통해 자동으로 추가되도록 수정
  • 수동 편집이 필요한 경우 파일 상단 주석 제거 또는 수정

[scratchpad_end] -->

Also applies to: 19-19, 23-23

🧹 Nitpick comments (2)
apps/client/src/pages/onBoarding/components/footer/Footer.tsx (1)

7-7: Footer의 절대 위치 지정 방식을 검토해주세요.

absolute bottom-0 포지셔닝을 사용하면 콘텐츠가 길어질 경우 Footer와 겹칠 수 있습니다. 현재 OnBoarding 페이지가 h-screen을 사용하고 있어 큰 문제는 없지만, 향후 콘텐츠가 늘어날 경우를 대비해 레이아웃 구조를 검토하는 것을 권장합니다.

대안:

  • Sticky footer 패턴 사용 (부모 flex container + flex-1 main)
  • 또는 최소 높이 보장 로직 추가
apps/landing/src/components/Footer.tsx (1)

1-73: Landing Footer와 OnBoarding Footer 간 코드 중복을 고려해보세요.

두 Footer 컴포넌트가 상당 부분 유사한 코드를 공유하고 있습니다 (약관 링크, 연락처, 저작권 표시, 소셜 링크 등). 다음과 같은 방법으로 중복을 줄일 수 있습니다:

  • 공통 Footer 컴포넌트를 만들고 variant props로 차이점 처리
  • 또는 Footer 하위 컴포넌트들을 재사용 가능하게 분리

현재는 동작하지만, 향후 Footer 업데이트 시 두 곳을 모두 수정해야 하는 유지보수 부담이 있습니다.

📜 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 52d5d81 and ef4753a.

⛔ Files ignored due to path filters (2)
  • packages/design-system/src/icons/source/instagram.svg is excluded by !**/*.svg
  • packages/design-system/src/icons/source/palms.svg is excluded by !**/*.svg
📒 Files selected for processing (5)
  • apps/client/src/pages/onBoarding/OnBoarding.tsx (1 hunks)
  • apps/client/src/pages/onBoarding/components/footer/Footer.tsx (1 hunks)
  • apps/landing/src/components/FinalCTASection.tsx (2 hunks)
  • apps/landing/src/components/Footer.tsx (1 hunks)
  • packages/design-system/src/icons/iconNames.ts (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: constantly-dev
Repo: Pinback-Team/pinback-client PR: 2
File: pnpm-workspace.yaml:3-3
Timestamp: 2025-08-18T13:48:59.065Z
Learning: constantly-dev는 docs 디렉터리를 컨벤션 문서 추가용으로 사용할 예정이라고 명시했습니다.
Learnt from: constantly-dev
Repo: Pinback-Team/pinback-client PR: 5
File: apps/extension/src/index.css:1-1
Timestamp: 2025-08-19T17:18:57.678Z
Learning: constantly-dev는 디자인 시스템 설정 PR 머지 후 `import 'pinback/tailwind-config/shared-styles.css';`를 `app.css`나 `index.css`에서 사용하여 공유 스타일을 관리할 계획입니다.
🧬 Code graph analysis (1)
apps/client/src/pages/onBoarding/OnBoarding.tsx (2)
packages/design-system/src/components/gtag/utils/gtag.ts (1)
  • trackPageView (50-64)
packages/design-system/src/components/index.ts (1)
  • trackPageView (20-20)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: storybook
🔇 Additional comments (2)
apps/client/src/pages/onBoarding/OnBoarding.tsx (1)

6-6: 레이아웃 구조 개선이 잘 구현되었습니다.

Footer 컴포넌트 통합과 함께 레이아웃을 수직 플렉스 구조(flex-col)로 변경하고, 메인 콘텐츠를 시맨틱한 <main> 요소로 감싼 것은 좋은 접근입니다. 구조가 명확하고 접근성도 향상되었습니다.

Also applies to: 13-13, 17-20

apps/landing/src/components/FinalCTASection.tsx (1)

4-4: LGTM! Footer 통합과 레이아웃 개선이 잘 되었습니다.

h-dvh를 사용한 컨테이너 구조와 Footer 배치가 적절합니다. 동적 뷰포트 높이 단위 사용은 모바일 환경에서도 좋은 사용자 경험을 제공합니다.

Also applies to: 13-13, 35-36

</a>
<p className="caption1-sb text-font-gray-2">|</p>
<a
href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

개인정보처리방침 URL에 불필요한 공백이 있습니다.

URL 앞에 공백이 포함되어 있어 링크가 올바르게 작동하지 않을 수 있습니다.

🔎 수정 제안
-          href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
+          href="https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
📝 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
href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
href="https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
🤖 Prompt for AI Agents
In apps/client/src/pages/onBoarding/components/footer/Footer.tsx around line 19,
the href value contains a leading space before the URL which can break the link;
remove the leading whitespace so the href begins with "https://..." (or apply
.trim() to the string source if the URL is built/coming from a variable) and
verify the link opens correctly.

</a>
<p className="caption1-sb text-font-gray-2">|</p>
<a
href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

개인정보처리방침 URL에 불필요한 공백이 있습니다.

URL 앞에 공백이 포함되어 있어 링크가 올바르게 작동하지 않을 수 있습니다. 온보딩 Footer에도 동일한 문제가 있습니다.

🔎 수정 제안
-              href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
+              href="https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
📝 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
href=" https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
href="https://right-turquoise-268.notion.site/pinback-2c527450eb1c804390effb2ee32072b2?source=copy_link"
🤖 Prompt for AI Agents
In apps/landing/src/components/Footer.tsx around line 27, the href value
contains a leading space before the URL which can break the link; remove the
leading whitespace so the href begins with "https://..." and verify other Footer
instances (e.g., the onboarding Footer) for the same leading-space issue and fix
them similarly so all href attributes contain no extra whitespace.

Copy link
Collaborator

@jllee000 jllee000 left a comment

Choose a reason for hiding this comment

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

빠른 푸터작업! 고생하셨습니다~~!

Comment on lines +52 to +53
target="_blank"
rel="noopener noreferrer"
Copy link
Collaborator

Choose a reason for hiding this comment

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

이거 보안문제(?) 떄문에 추가해주신걸까요?
어떠한 의도에서 쓰는 건지 단순 질문!

Copy link
Member Author

Choose a reason for hiding this comment

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

네 맞아요! 저도 정확한 공격 방식에 대해서는 깊게 모르지만, 보안 취약점을 막기 위해서 사용한다고 하네요!

https://taylog.tistory.com/231

Comment on lines +3 to +4
const Footer = () => {
const currentYear = new Date().getFullYear();
Copy link
Collaborator

Choose a reason for hiding this comment

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

요거 간단한 함수긴 하지만,,
온보딩 푸터랑 랜딩 푸터 모두 공통적으로 쓰는 연도 불러오는 거 나중에 따로 빼도 좋을 것 같아요!

근데 이렇게 정말 "개애애 간결한 로직들"은 굳이 리팩토링 안하는 게 코드 흐름 읽기 더 편한 것 같기도 하나 싶네용.. 리팩토링의 기준 어렵도다

Copy link
Member Author

Choose a reason for hiding this comment

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

이 부분은 말씀해주신 것처럼 고민이 되긴하네요. 물론 2개의 footer에서 같이 사용되고 있으니까 유틸로 분리해서 재사용을 없애는 관점도 타당해보이지만, 일단 두개의 footer 사용처가 각각 다른 apps라 분리하게 되면 packages로 빼야한다는점. 또한 packages로 빼야될만큼 해당 로직이 컴포넌트의 역할과 완전히 다른지를 또 생각해보면 애매하다는 생각이 드네요.

재림님은 어떻게 생각하시나요?? @jllee000

Copy link
Collaborator

Choose a reason for hiding this comment

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

근데, 응집도(?)를 생각해보면,, 또 이런 간단한 로직까지 너무 짜잘하게 분리하는게 오히려 좀 불필요하나 싶기도 하네용!

@constantly-dev constantly-dev merged commit aa8f931 into develop Dec 22, 2025
11 checks passed
@constantly-dev constantly-dev changed the title feat(client, landing): footer 구현 Feat(client, landing): footer 구현 Dec 22, 2025
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] 랜딩페이지 Footer 구현

2 participants