OneLiteFeatherNET / OneLiteFeatherNET/Voyager

Persistent leaderboard: all-time rankings per cup

Open
#127 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

beta database P1
Dominant language
Java
Stars
0
Forks
0
Avg merge
2d 21h
Merged PRs (30d)
12

Description

Description

After the alpha proves the core loop works, players want to see how they stack up historically. An all-time leaderboard per cup (top 10 scores) gives players a reason to replay and compete long-term.

Acceptance Criteria

  • LeaderboardEntry entity stores: cup name, player UUID, score, position, date
  • After each race ends: leaderboard is updated if the player's score is a personal best for that cup
  • /leaderboard <cup-name> command displays the top 10 all-time scores in chat
  • Leaderboard query is cached in memory (TTL: 60 seconds) to avoid repeated DB reads
  • Cache is invalidated when a new entry would enter the top 10
  • Unit test covers: submit score → check leaderboard updated; submit lower score → check no update

Technical Details

  • New LeaderboardEntity schema in shared/database
  • LeaderboardService interface + impl in server module
  • /leaderboard command uses the Cloud command framework

Dependencies

  • "Persist game results in EndPhase" must be done first

Estimate

M

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by checking the existing EndPhase game-result persistence and the shared/database module, then inspect server services and the Cloud command framework. Add the LeaderboardEntity and LeaderboardService flow described in the acceptance criteria, including the in-memory TTL cache. Done means the /leaderboard command shows the top 10 and unit tests cover both a personal-best update and a lower-score no-op.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, database
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Clearly specified
Newbie friendliness
68/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.