Skip to content

Webpage UI: User Profile #2304

@henryajisegiri

Description

@henryajisegiri

Overview

This ticket covers assembling the User Profile page, wiring up data/props, and ensuring correct spacing, ordering, and responsive behaviour across all three breakpoints. The page has two states — empty (new user with no bio or activity) and filled (established user with full profile data).


Empty State
Filled State


Background

The following components exist and are ready to use:

Component Description
NavBar Logo, nav links, search (CTRL+K), theme toggle, user avatar, log in — "Posts" tab with notification dot
UserProfile User avatar, username, role badge, member since, and role
HeaderLinks Icon Button component for social links (GitHub, Website, Email, Slack etc.)
BioBlock Bio content area; renders empty state prompt or filled bio with role/library breakdowns and free text
GitHubActivityBlock Bullet list of recent GitHub activity with linked repo names, "View on GitHub" CTA
MailingListActivityBlock Date + subject line list of mailing list posts, "View all activity" CTA
UserPageCards For achievements, badges and CTA
PostsCard List of user's posts (title, date, tags); "View all posts" CTA
Footer Nav links + social icons

Breakpoints

Label Width
Mobile < 768px
Tablet 768px – 1279px
Desktop ≥ 1280px

Empty vs Filled States

Empty State

  • BioBlock — renders prompt: "Add a short bio to tell the community who you are, what you work on, or what you're passionate about."
  • AchievementsBlock — renders placeholder tiles + "Showcase your contributions and milestones as you participate in the community." copy
  • BadgesBlock — renders placeholder badge icons + "Badges highlight specific skills, roles, or areas of contribution" copy
  • PostsBlock — renders "Share your knowledge with the community" prompt + "Create a post" CTA
  • Edit Profile Button — triggers the edit profile UI
  • Social Link Icons — Disabled, action prompts are rendered on hover

Filled State

  • BioBlock — renders role/library breakdown (Author, Maintainer, Contributor, Reviews, Professional Profile sections) and free text paragraphs
  • AchievementsBlock — renders achievement tiles with count, title, description
  • BadgesBlock — renders badge icons with label and earned date
  • PostsBlock — renders list of posts (title, date, tags) + "View all posts" CTA

Acceptance Criteria

  • All components render in the correct order per breakpoint

  • Empty state renders correctly for Bio, Achievements, Badges, and Posts when no data is present

  • Filled state renders correctly with all data populated

  • For the disabled social links, render the following action prompts on hover:

  • "Add GitHub Profile Link"

  • "Add Website Link"

  • "Add Email Address"

  • "Add CPP Slack Profile Link"

  • Light and dark mode render correctly for all components

  • All props wired with real data for both empty and filled states, use mock data were necessary

  • Tested in Chrome, Safari, Firefox


Out of Scope

  • Profile editing functionality (separate ticket)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions