Skip to content

feat: 푸터에 RSS 구독 아이콘을 추가 - #141

Merged
Wisesaturn merged 2 commits into
v3from
feat/#140
Sep 28, 2026
Merged

Wisesaturn merged 2 commits into
v3from
feat/#140

Conversation

@Wisesaturn

Copy link
Copy Markdown
Owner

Pull Request Type

  • feat: 기능 구현 (새로운 요구사항 구현, 기존 기능 개선)
  • fix: 버그 수정
  • refactor: 코드 리팩토링

    성능 개선, 구조 변경, 기능 수정 없을 때

  • style: 포매팅, 린트 (기능 변화 없음)
  • chore: 환경설정, 패키지 관리, 라이브러리 설치 등
  • docs: 문서 작성

관련 이슈

closes #140

작업 내용

푸터에서 RSS 피드로 바로 갈 수 있습니다

  • 푸터 아이콘 줄(LinkedIn, 이메일, GitHub, Instagram) 끝에 RSS 아이콘을 추가했습니다. 누르면 새 탭에서 피드 주소(/rss.xml)가 열리고, 그 주소를 RSS 리더에 넣으면 새 글을 구독할 수 있습니다.
  • 지난 릴리즈에서 피드를 열었지만 화면에 링크가 없어, 피드가 있는지 알 방법이 없었습니다.
  • 아이콘은 옆 아이콘과 같은 크기와 색입니다. 다크 모드와 마우스를 올렸을 때의 색도 옆 아이콘과 같게 바뀝니다.

검증

  • 개발 서버 푸터를 데스크톱 1280px, 모바일 390px 에서 라이트와 다크, hover 로 캡처해 옆 아이콘과 비교했습니다. 390px 에서 RSS 와 GitHub 아이콘 폭이 둘 다 28px 입니다
  • 링크 속성: href="/rss.xml", target="_blank", rel="noreferrer", aria-label="RSS 피드 구독"
  • pnpm typecheck 통과, pnpm lint 에러 0 (경고 15개는 작업 전과 같음)
  • pnpm test 393개 통과 (NODE_OPTIONS=--no-experimental-webstorage. Node 26 에서 기존 다크 모드 테스트가 깨지는 문제는 이번 변경과 관계없습니다)

- 📋 작업 내역

  - `src/commons/ui/icons/Rss.tsx`: Lucide `rss`(v1.48.0, ISC) 모양을 두께 3 의 면으로 그린 아이콘. `viewBox="-1.5 -1.5 27 27"` 로 둘레에 3 만큼 여백을 둔다
  - `src/commons/ui/icons/Icons.tsx`: `Icons.Rss` 등록
  - `src/modules/layout/ui/Contact.tsx`: 푸터 아이콘 줄 다섯 번째에 `/rss.xml` 링크 추가 (`target="_blank"`, `aria-label="RSS 피드 구독"`)

- 💡 설계 이유

  - #138 로 피드를 열었지만 화면에 링크가 없었다. 레퍼런스 블로그 16곳의 서버 HTML 을 보니 화면에 둔 곳은 대부분 아이콘이었고, kciter 와 heropy 는 푸터 소셜 아이콘 줄에 두었다. 모바일 헤더는 좁아 푸터 줄 끝에 붙였다
  - 누르면 `/rss.xml` 을 새 탭으로 연다. XSL 로 꾸민 안내 페이지나 주소 복사도 검토했지만, 레퍼런스 대부분이 원문으로 바로 링크하고 리더에 넣을 주소만 있으면 돼서 뺐다
  - 아이콘 출처
    - `@ant-design/icons-svg` 4.6.0 의 848개에는 RSS 가 없었다(`GithubFilled` 는 있어 검색은 맞다). Lucide 에는 선으로 그린 `rss` 가 있다
    - 채운 Simple Icons RSS 와 나란히 그려 비교했고, 사용자가 Lucide 모양을 골랐다
  - 선을 면으로 옮긴 이유: 푸터 아이콘 색은 `icons-color` 의 `fill-*` 클래스로 정해진다. Lucide 의 `stroke="currentColor"` 를 그대로 쓰면 RSS 만 글자색을 따라가고 hover 색도 바뀌지 않는다. 호는 반지름 ±1.5 의 띠와 둥근 끝, 점은 반지름 2.5 의 원으로 그렸다
  - 두께 2, 2.5, 3 과 여백 0, 1.5, 3 을 옆 아이콘과 32px, 28px 로 나란히 그려 보고 사용자가 두께 3, 여백 3 을 골랐다
  - 다른 링크는 `<Link>` 인데 RSS 는 `<a>` 다. `/rss.xml` 은 화면 라우트가 아니라 XML 을 돌려주는 리소스 라우트라 클라이언트 내비게이션을 타지 않게 했다
  - 확인한 것
    - 개발 서버 푸터를 1280px, 390px 에서 라이트와 다크, hover 로 캡처했다. 색과 hover 색이 옆 아이콘과 같고, 390px 에서 RSS 와 GitHub SVG 폭이 둘 다 28px 다
    - typecheck 통과, lint 에러 0 (경고 15개는 작업 전과 같다), test 393개 통과 (`NODE_OPTIONS=--no-experimental-webstorage`)
@vercel

vercel Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

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

Project Deployment Actions Updated
blog Ready Ready Preview Sep 28, 2026 6:40am UTC

@Wisesaturn Wisesaturn added the patch 버전 patch 를 올린다 (수정, 스타일, 리팩토링) label Sep 28, 2026

@Wisesaturn Wisesaturn left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Code Review

확신도 80 이상인 지적은 없습니다. 변경이 작아(아이콘 SVG 하나, 등록 한 줄, 링크 한 개) 단계를 줄여 직접 확인했어요.

  • 이슈 #140 완료 조건: 푸터 다섯 번째 아이콘, 새 탭에서 /rss.xml, 라이트와 다크와 hover 색, 28px과 32px 크기를 캡처로 확인했습니다
  • 컨벤션: 아이콘은 다른 아이콘과 같은 모양의 컴포넌트(IconProps, className 전달, fill="currentColor")이고 Icons 에 등록했습니다. 새 패키지는 없습니다
  • <a> 를 쓴 것은 의도입니다. /rss.xml 은 리소스 라우트라 <Link> 의 클라이언트 내비게이션을 타면 안 됩니다
  • 라이선스: Lucide(ISC) 출처와 버전을 Rss.tsx 주석에 적었습니다

@Wisesaturn
Wisesaturn merged commit aecf961 into v3 Sep 28, 2026
3 checks passed
@Wisesaturn
Wisesaturn deleted the feat/#140 branch September 28, 2026 06:42

This branch was successfully deployed

1 active deployment
Preview — e527d1d7 Deployed Sep 28, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

patch 버전 patch 를 올린다 (수정, 스타일, 리팩토링)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

푸터에 RSS 구독 아이콘을 추가한다

1 participant