OneLiteFeatherNET / OneLiteFeatherNET/Voyager
Persistent leaderboard: all-time rankings per cup
Nobody has claimed this yet.
- 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
-
LeaderboardEntryentity 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
LeaderboardEntityschema inshared/database LeaderboardServiceinterface + impl inservermodule/leaderboardcommand uses the Cloud command framework
Dependencies
- "Persist game results in EndPhase" must be done first
Estimate
M
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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