vesild

A very simple leaderboard service.

Usage no npm install needed!

<script type="module">
  import vesild from 'https://cdn.skypack.dev/vesild';
</script>

README

VesilD

A very simple leaderboard service

  • RESTful (ish)
  • Redis Backed
  • Really Simple!

API

This is only sort of RESTful - don't @ me!

  • PATCH /leaderboard/:leaderboardKey/member/:memberKey

    Increments the score for a single member in a single leaderboard

    If the leaderboard does not exist then it is created

    If the member does not exist then it is created with score equal to points

    [
        {
            "path": "/points",
            "action": "increment",
            "value": (integer)
        }
     ]
    

    Returns a 200 response with body:

    {
         "member": (string),
         "leaderboard": (string),
         "points": (integer),
         "rank": (integer)
    }
    
  • PATCH /leaderboard/:leaderboardKey

    As above but allowing for the incrementing of multiple member points in a single leaderboard

    [
        {
             "path": "/member/:memberKey/points",
             "action": "increment",
             "value": (integer)
        },
        {
             "path": "/member/:memberKey/points",
             "action": "increment",
             "value": (integer)
        }
        ...
    ]
    
  • PATCH /member/:memberKey

    As above but allowing for the incrementing of multiple leaderboard points for a single member

    [
       {
           "path": "/leaderboard/:leaderboardKey/points",
           "action": "increment",
           "value": (integer)
       },
       {
           "path": "/leaderboard/:leaderboardKey/points",
           "action": "increment",
           "value": (integer)
       }
       ...
    ]
    
  • GET /leaderboard/:leaderboardKey?from=x&to=y

    Get a list of members in a leaderboard from position x to y

    First position is position x

    If not provided the x = 1, y = 10

    [
       {
          "member": (string),
          "leaderboard": (string),
          "points": (integer),
          "rank": (integer)
       },    
       {
          "member": (string),
          "leaderboard": (string),
          "points": (integer),
          "rank": (integer)
       },
       ...
    ]
    
  • GET /leaderboard/:leaderboardKey?includeMember=:id

    Includes the position of a member in the result set.

    To return just the position of this member pass from=0&to=0

    [
       {
          "member": (string),
          "leaderboard": (string),
          "points": (integer),
          "rank": (integer)
       },
       {
          "member": (string),
          "leaderboard": (string),
          "points": (integer),
          "rank": (integer)
       }
       ...
    ]
    
  • GET /member/:memberKey

    Gets a list of all leaderboards the member is part of

 [
   {
     "member": (string),
     "leaderboard": (string),
     "points": (integer),
     "rank": (integer)
   },    
   {
     "member": (string),
     "leaderboard": (string),
     "points": (integer),
     "rank": (integer)
   },
   ...
 ]
  • DELETE /leaderboard/:leaderboardKey/member/:memberKey

    Deletes a value by leaderboard and member keys

    Returns 204 on success