Describe the solution you'd like
When user visits scoreboard, points for all users are calculated (most are already in cache) and shown in one long single list. We should change this to a paginated view; 20 users should be shown on a page at one time with "prev", "next" buttons.
Additional context
Flask-SQLAlchemy provides a pagination API but we might need to implement our own since we cache the list of users.
We can also consider not caching the list of all users to allow us to use the inbuilt pagination API. But we need to think about speed and performance.
Main problem: The scoreboard should still be ordered by descending points along with ranks shown.
Describe the solution you'd like When user visits scoreboard, points for all users are calculated (most are already in cache) and shown in one long single list. We should change this to a paginated view; 20 users should be shown on a page at one time with "prev", "next" buttons.
Additional context