feat: leaderboards (top players by various metrics) #20

Closed
opened 2026-03-07 14:37:59 -08:00 by hikari · 0 comments
Owner

Overview

A public Leaderboards page showing the top players across several metrics. Ties in naturally with the existing public character sheet.

Design

Leaderboard Categories

  • Total Gold Earned (lifetime)
  • Prestige Count
  • Transcendence Count
  • Apotheosis Count
  • Bosses Defeated (lifetime)
  • Quests Completed (lifetime)
  • Achievements Unlocked

Display

  • Each leaderboard shows rank, avatar, character name (or username), active title (if #19 is implemented), and the metric value
  • Clicking a player's row links to their public /character/:id page
  • Players can opt out via a privacy toggle in profile settings (showOnLeaderboards)
  • Leaderboards are public (no login required to view)

Routes

  • New public page: /leaderboards
  • API endpoint: GET /leaderboards?category=totalGold&limit=100

Task Checklist

  • Add showOnLeaderboards to ProfileSettings type and profile API
  • GET /leaderboards API endpoint (queries Player collection, returns top N sorted by chosen field)
  • LeaderboardsPage.tsx — tabbed view per category
  • Wire /leaderboards in App.tsx
  • Link to leaderboards from the main game UI (e.g. nav or profile panel)
  • Update About panel How to Play

This issue was created with help from Hikari~ 🌸

## Overview A public **Leaderboards** page showing the top players across several metrics. Ties in naturally with the existing public character sheet. ## Design ### Leaderboard Categories - **Total Gold Earned** (lifetime) - **Prestige Count** - **Transcendence Count** - **Apotheosis Count** - **Bosses Defeated** (lifetime) - **Quests Completed** (lifetime) - **Achievements Unlocked** ### Display - Each leaderboard shows rank, avatar, character name (or username), active title (if #19 is implemented), and the metric value - Clicking a player's row links to their public `/character/:id` page - Players can opt out via a privacy toggle in profile settings (`showOnLeaderboards`) - Leaderboards are public (no login required to view) ### Routes - New public page: `/leaderboards` - API endpoint: `GET /leaderboards?category=totalGold&limit=100` ## Task Checklist - [ ] Add `showOnLeaderboards` to `ProfileSettings` type and profile API - [ ] `GET /leaderboards` API endpoint (queries Player collection, returns top N sorted by chosen field) - [ ] `LeaderboardsPage.tsx` — tabbed view per category - [ ] Wire `/leaderboards` in `App.tsx` - [ ] Link to leaderboards from the main game UI (e.g. nav or profile panel) - [ ] Update About panel How to Play --- ✨ This issue was created with help from Hikari~ 🌸
naomi closed this issue 2026-03-08 15:53:41 -07:00
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: nhcarrigan/elysium#20