Skip to content

feat(profile): add dedicated developer profile pages and API - #209

Merged
O2sa merged 4 commits into
O2sa:mainfrom
ws-rush:feat/developer-profile-pages
Aug 30, 2026
Merged

feat(profile): add dedicated developer profile pages and API#209
O2sa merged 4 commits into
O2sa:mainfrom
ws-rush:feat/developer-profile-pages

Conversation

@ws-rush

@ws-rush ws-rush commented Aug 29, 2026

Copy link
Copy Markdown
Contributor

Summary

Introduces dedicated developer profile pages at /user/[username], allowing users to view, share, and compare individual developer impact analytics.

Key Changes

  • Profile Page (/user/[username]): Server-rendered developer profile with dynamic OpenGraph meta tags, Twitter card previews, and JSON-LD structured data.
  • Interactive Profile Dashboard (UserProfileClient):
    • Overall developer impact score with category breakdown (Repositories, Pull Requests, Community contributions).
    • Score weight distribution visualization.
    • Highlights for top repositories, merged pull requests, and community issues/discussions.
    • Collapsible scoring transparency signals panel.
    • One-click profile link sharing and "Compare with another developer" action.
  • REST API Endpoint (/api/user/[username]): Scored user analytics endpoint with robust error handling (404 for missing GitHub users, 429 for rate limits).
  • Auto-Sync Service (lib/user.ts): Reusable getUserProfile utility that detects country and asynchronously syncs records to PostgreSQL database while updating cache.
  • App-wide Deep Linking: Updated Leaderboard and Comparison views to link developer avatars and names directly to their profile pages while preserving external GitHub links.
  • Flexible Comparison Query Parameters: Support ?username1=...&username2=... and ?user1=...&user2=... formats in addition to repeated ?username=....
  • i18n & Tests: Full English and Arabic translations, error handling UI for not-found profiles, and comprehensive unit tests for route and helper functions.

Testing

  • Added unit tests in test/api/user.route.test.ts covering successful score calculation, 404 not-found handling, 429 rate-limiting, and parameter validation.
  • All test suites passing (14 test files passed / 111 tests).

- Add /user/[username] dynamic route with SSR metadata and JSON-LD
- Create UserProfileClient dashboard with score breakdown, top work, and transparency signals
- Add /api/user/[username] endpoint and getUserProfile utility with automatic DB syncing
- Update leaderboard and comparison views to link to developer profiles
- Add full i18n support (EN/AR) and comprehensive unit tests
@vercel

vercel Bot commented Aug 29, 2026

Copy link
Copy Markdown

@ws-rush is attempting to deploy a commit to the osama's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions

Copy link
Copy Markdown

Thank you for the pull request! ✅

A maintainer will review this soon. Please be patient while we take a look. 🙌

- Pass ?country= parameter when navigating from country leaderboards
- Update back button to return to specific country leaderboard with fallback
- Add breadcrumb navigation (Home / Leaderboards / Country / User)
- Add Arabic and English localization for back navigation and breadcrumbs
@vercel

vercel Bot commented Aug 30, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
dev-impact Ready Ready Preview Aug 30, 2026 7:37pm

@O2sa
O2sa merged commit 6286775 into O2sa:main Aug 30, 2026
1 of 2 checks passed
@O2sa

O2sa commented Aug 30, 2026

Copy link
Copy Markdown
Owner

Thank you, @ws-rush! Another great contribution merged! 🚀

We truly appreciate your continued support! If you find this tool useful, please consider giving us a ⭐ star on GitHub—it helps more developers find our work and motivates us to keep improving!

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