Skip to content

feat(home): Followers bubble UI with People/Followers tab#55

Open
chaaerim wants to merge 25 commits intomainfrom
feat/follower-bubble
Open

feat(home): Followers bubble UI with People/Followers tab#55
chaaerim wants to merge 25 commits intomainfrom
feat/follower-bubble

Conversation

@chaaerim
Copy link
Copy Markdown
Member

@chaaerim chaaerim commented Apr 15, 2026

Summary

  • GitHub API에서 hamsurang organization의 followers 목록을 가져와 circle-packing bubble UI로 표시
  • 기존 People 섹션을 People/Followers 탭 구조로 변경 (GitHub 레포 탭 스타일)
  • People 탭: 기존 멤버 아바타 그리드 + "show more information" 팝오버 유지
  • Followers 탭: 원형 clip-path 버블 UI + "Follow Us" CTA 버튼

Bubble UI 상세

  • 6단계 크기 tier (46/36/28/22/16/10px) circle-packing 알고리즘
  • Featured followers (yejineee, jcha0713) 2명은 항상 큰 버블로 고정 표시
  • 나머지 28명은 페이지 로드마다 랜덤 셔플
  • Featured user가 팔로우를 취소한 경우 랜덤 팔로워로 자동 대체
  • 원형 컨테이너 (clip-path: circle(50%))로 밀집감 있는 레이아웃

파일 구조

  • Followers/circle-pack.ts — 6단계 크기 + featured 지원 packing 알고리즘
  • Followers/FollowersBubble.tsx — 원형 클라이언트 버블 컴포넌트
  • Followers/Followers.constants.ts — featured followers 상수
  • PeopleFollowersTabs/PeopleFollowersTabs.tsx — 탭 전환 클라이언트 컴포넌트
  • PeopleFollowersTabs/PeopleFollowersSection.tsx — 서버 래퍼 컴포넌트

Test plan

  • circle-pack 알고리즘 단위 테스트 (54개 전체 통과)
  • People 탭 기본 활성 확인, 멤버 아바타 클릭 시 프로필 이동
  • Followers 탭 클릭 시 버블 UI 렌더링 확인
  • Featured followers가 항상 큰 버블로 표시되는지 확인
  • 페이지 새로고침 시 비-featured 팔로워 순서 랜덤 변경 확인
  • "Follow Us" 버튼 클릭 시 GitHub 페이지 이동
  • 모바일 반응형 확인

스크린샷

데스크탑

image

모바일

image

🤖 Generated with Claude Code

chaaerim and others added 25 commits April 14, 2026 00:30
Implements getFollowers() with server-only guard, 1-hour revalidation, and graceful error handling. Includes TDD tests covering success and failure cases.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…layout

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
… issue

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ports

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace separate People and Followers sections with unified tabbed section.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The tab component belongs in the left sidebar (aside), not the main content area.
Layout.tsx now renders PeopleFollowersTabs in place of the old People component.
Followers data is fetched client-side since layout is a client component.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ow Us button

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ple tab

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Featured usernames (defined in Followers.constants.ts) get the largest
bubble size. If a featured user has unfollowed, a random follower fills
the slot.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Featured followers always appear first with large bubbles,
remaining followers are randomly shuffled on each page load.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel bot commented Apr 15, 2026

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

Project Deployment Actions Updated (UTC)
activity.hamsurang.com Ready Ready Preview, Comment Apr 15, 2026 3:21pm
hamsurang.com Ready Ready Preview, Comment Apr 15, 2026 3:21pm
home.hamsurang.com Ready Ready Preview, Comment Apr 15, 2026 3:21pm

Request Review

* GitHub usernames that should appear as large bubbles.
* If a user unfollowed, a random follower takes their slot.
*/
export const FEATURED_FOLLOWERS = ['yejineee', 'jcha0713'] as const
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

헉 이 두 분은 왜 featured 인가요?! (클라이머라서?!)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

@minsoo-web 스샷에서 보실 수 있듯이 bubble을 그릴 때 대왕 버블이 생기는데요!
얼굴 사진으로 프로필을 하시고, 클라이머가 아닌 분들은 대왕 버블에 프로필 사진이 렌더링되는게 부담이실 수도 있을 것 같아서 얼굴 사진이 아니고 클라이머인 예진님과 주훈님을 대왕 버블로 지정해두고 나머지 분들은 랜덤으로 보일 수 있도록 처리했습니다

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.

2 participants