Skip to content

Players outside the top 30 never find out how they did #160

Description

@TheCodeHeist-Coder

The mid-quiz leaderboard renders leaderboard.slice(0, 30)
(apps/frontend/src/screens/LiveQuiz.tsx:556). The final screen shows a podium
of 3 plus others, which is sortedLeaderboard.slice(3) — unbounded, but in
practice the earlier cap means the client may only ever hold a truncated list.

Two problems follow:

Nothing indicates the list was cut. A quiz with 200 players shows 30 rows and
stops. There is no "showing top 30 of 200", so the other 170 cannot tell whether
they were excluded or the app failed.

A player cannot find themselves. If you placed 47th, you finish the quiz
without ever seeing your score or rank. You answered every question and the app
never tells you how you did — which is the whole point of playing.

This matters because Rexial is built for classrooms and events, exactly the
setting where sessions exceed 30 people. The architecture notes mention 300 per
session as a design target.

Suggested fix:

  • Always show the current participant's own row, pinned, with their real rank —
    even when they fall outside the visible slice ("You: some_logic_of_websockets_added #47 · 320 pts")
  • Say how many are not shown, and ideally make the list scrollable or paginated
  • Highlight the participant's own row when they are in the visible range, so
    they can spot themselves without reading every name

The client knows its own participantId, so finding the row is straightforward.
Note the rank must come from the full sorted list, not from the sliced one.

Definition of done:

  • A participant always sees their own score and rank on the final screen
  • The UI states when the list is truncated
  • A participant inside the top 30 has their row visually distinguished

Good issue for someone who wants a UX-shaped problem rather than a pure bug fix.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions