Skip to content

feat(VAN-17): fill gaps in Hall of Fame admin module#25

Merged
fr4nc1stein merged 1 commit into
mainfrom
fr4nc1stein/van-17-fill-gaps-in-hall-of-fame-admin-module
May 29, 2026
Merged

feat(VAN-17): fill gaps in Hall of Fame admin module#25
fr4nc1stein merged 1 commit into
mainfrom
fr4nc1stein/van-17-fill-gaps-in-hall-of-fame-admin-module

Conversation

@fr4nc1stein

Copy link
Copy Markdown
Owner

Summary

  • Add public_title override column to hall_of_fame (migration 0013) so admins can set a custom public-facing title per entry without touching the original auto-generated title
  • New points adjustment API with mandatory reason field; recalculates researcher totals from scratch to prevent drift and syncs the related hacktivity row
  • Bulk visibility endpoint handles up to 250 entries in a single request, logging one audit entry per changed row
  • Public researcher profile page at /researcher/[id] (no auth); stats derived from public entries only so hidden entries never leak through aggregates
  • Leaderboard CSV export fetches all rows before generating the file
  • Public leaderboard, stats, and hacktivity now filter out hidden entries consistently

New API endpoints

Method Path Purpose
PATCH /api/admin/hall-of-fame/[id]/title Override public title (null clears it)
PATCH /api/admin/hall-of-fame/[id]/points Adjust points with mandatory reason
PATCH /api/admin/hall-of-fame/bulk-visibility Bulk show/hide entries
GET /api/researcher/[id] Public researcher profile

Test plan

  • Set a public title override on an entry — verify it shows on the public page and original is shown as grey subtitle in admin
  • Clear a public title override (save empty) — verify original title is restored
  • Adjust points with a reason — verify researcher total updates and hacktivity reflects new value
  • Attempt to adjust points with blank reason — verify 422 response
  • Select multiple entries and bulk hide — verify they disappear from public leaderboard
  • Export leaderboard CSV — verify all researchers are present
  • Visit /researcher/[id] for a researcher with hidden entries — verify hidden entry stats do not appear in totals
  • Visit /researcher/[id] for a researcher with no public entries — verify 404

🤖 Generated with Claude Code

- Add public_title override column to hall_of_fame (migration 0013)
- PATCH /api/admin/hall-of-fame/[id]/title — admin can override the
  auto-generated public title per entry; null clears the override
- PATCH /api/admin/hall-of-fame/[id]/points — manually adjust points
  with a mandatory reason; recalculates researcher total and syncs
  hacktivity row; logged to audit_logs
- PATCH /api/admin/hall-of-fame/bulk-visibility — show/hide up to 250
  entries in one request; logs one audit entry per entry changed
- GET /api/researcher/[id] — public researcher profile endpoint;
  stats computed from public entries only so hidden entries don't leak
- /researcher/[id] — public researcher profile page (no auth required)
- Admin leaderboard CSV export (client-side, all rows)
- Bulk selection checkboxes + toolbar on entries table
- Inline title editing and points adjustment modal in admin UI
- Public leaderboard, stats, and hacktivity now exclude hidden entries
- Hacktivity respects public_title override and reflects point adjustments

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@fr4nc1stein fr4nc1stein merged commit c4db5f9 into main May 29, 2026
2 of 3 checks passed
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.

1 participant