Skip to content

feat: shareable public profile page /u/[username] with opt-in public stats (#2117)#2203

Open
IshitaSingh0822 wants to merge 2 commits into
Priyanshu-byte-coder:mainfrom
IshitaSingh0822:feat/public-profile-page
Open

feat: shareable public profile page /u/[username] with opt-in public stats (#2117)#2203
IshitaSingh0822 wants to merge 2 commits into
Priyanshu-byte-coder:mainfrom
IshitaSingh0822:feat/public-profile-page

Conversation

@IshitaSingh0822
Copy link
Copy Markdown
Contributor

Summary

Implements the shareable public profile page at /u/[username] with opt-in public stats as described in #2117.

Closes #2117


Type of Change

  • Bug fix
  • New feature
  • Documentation update
  • Refactor / code cleanup

Changes Made

  • Added public_widgets jsonb column migration with default ["streak", "contributions"]
  • Updated settings API route to handle public_widgets in GET and PATCH with graceful tier fallback
  • Updated public-profile-data.ts to expose PublicWidgetKey type, memberSince, and publicWidgets fields
  • Updated public profile page to show GitHub avatar, member-since date, View on GitHub link, language breakdown, PR count, and Powered by DevTrack footer badge
  • Updated settings page to add widget selector checkboxes inside the Public Profile card

How to Test

  1. Enable Public Profile in /dashboard/settings
  2. Select which widgets to show using the new checkboxes and click Save
  3. Visit /u/[your-github-username] and verify only selected widgets appear
  4. Disable public profile and visit the same URL and verify 404 page appears
  5. Call GET /api/public/[username] without auth and verify it returns stats

Screenshots (if UI change)

N/A


Checklist

  • Linked issue in summary
  • npm run lint passes locally
  • No TypeScript errors (npm run type-check)
  • Self-reviewed the diff
  • Added/updated tests if applicable

Accessibility Checklist

  • Proper keyboard navigation tested
  • Responsive UI verified
  • Accessibility labels added where needed

Additional Notes

The public_widgets column falls back gracefully if the migration has not been run yet so no breaking changes for existing deployments.

@vercel
Copy link
Copy Markdown

vercel Bot commented Jun 8, 2026

@IshitaSingh0822 is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:feature GSSoC type bonus: new feature labels Jun 8, 2026
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 8, 2026

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

…stats

- Add public_widgets jsonb column migration
- Add widget selector checkboxes in settings page
- Add GitHub avatar, member-since, View on GitHub link
- Add language breakdown and PR count widgets gated by public_widgets
- Add Powered by DevTrack footer badge

Closes Priyanshu-byte-coder#2117
@IshitaSingh0822 IshitaSingh0822 force-pushed the feat/public-profile-page branch from 2816e40 to 883520b Compare June 8, 2026 10:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gssoc26 GSSoC 2026 contribution type:feature GSSoC type bonus: new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Shareable public profile page — /u/[username] with opt-in public stats

1 participant