{"id":26189056,"url":"https://github.com/audunegames/leaderboards-api","last_synced_at":"2026-05-16T08:42:20.257Z","repository":{"id":281749650,"uuid":"946291693","full_name":"audunegames/leaderboards-api","owner":"audunegames","description":"REST API for game leaderboards written in JS","archived":false,"fork":false,"pushed_at":"2025-03-17T16:44:23.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-06-03T14:26:48.375Z","etag":null,"topics":["js","leaderboard","rest-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/audunegames.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-10T23:06:53.000Z","updated_at":"2025-03-17T16:44:28.000Z","dependencies_parsed_at":"2025-03-11T00:38:29.717Z","dependency_job_id":null,"html_url":"https://github.com/audunegames/leaderboards-api","commit_stats":null,"previous_names":["audunegames/leaderboards-api"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/audunegames/leaderboards-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audunegames%2Fleaderboards-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audunegames%2Fleaderboards-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audunegames%2Fleaderboards-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audunegames%2Fleaderboards-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/audunegames","download_url":"https://codeload.github.com/audunegames/leaderboards-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/audunegames%2Fleaderboards-api/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266552513,"owners_count":23947174,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-22T02:00:09.085Z","response_time":66,"last_error":null,"robots_txt_status":null,"robots_txt_updated_at":null,"robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["js","leaderboard","rest-api"],"created_at":"2025-03-12T00:30:05.384Z","updated_at":"2026-05-16T08:42:20.227Z","avatar_url":"https://github.com/audunegames.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![GitHub last commit](https://img.shields.io/github/last-commit/audunegames/leaderboards-api)\n![GitHub License](https://img.shields.io/github/license/audunegames/leaderboards-api)\n\n# Audune Leaderboards API\n\n**This repository contains the source code for the Leaderboards API by Audune Games.**\n\n## Features\n\nThis package provides a REST API written in JavaScript to manage leaderboards and contestants for games or other tournaments. It uses a relational database as a backend to store the data, currently supporting SQLite and MySQL/MariaDB.\n\nThe REST API provides the following features:\n\n- Create, modify, and delete boards with different score fields.\n- Create, modify, and delete contestants that can submit a score to a board.\n- Submit scores to a board for a contestant with specified values for the score fields in the board.\n- Manage application keys and secrets that can authorize to the REST API.\n\nFor all features added in the lifespan of the repository, please refer to the [changelog file](CHANGELOG.md).\n\n## Installation\n\nThe provided [Dockerfile](Dockerfile) builds an image that serves the REST API using NodeJS. An image from this Dockerfile will be built and published to the GitHub Container Registry on every push or pull request using a [GitHub action](.github/workflows/docker-publish.yml).\n\nYou can pull the current version of the image with the following command:\n\n```bash\n$ docker pull ghcr.io/audunegames/leaderboards-api:master\n```\n\nOther versions of the package can be found [here](https://github.com/audunegames/leaderboards-api/pkgs/container/leaderboards-api).\n\n## Configuration\n\nThe REST API supports configuration via environment variables. The following environment variables can be set either directly, in a `.env` file, or in a Docker Compose configuration:\n\n- `LEADERBOARD_DATABASE_URL` - A [Sequelize database URL](https://sequelize.org/api/v6/class/src/sequelize.js~sequelize#instance-constructor-constructor) to set up the database connection. Currently only the `sqlite` and `mysql` schemes are supported. (**required**).\n- `LEADERBOARD_ADMIN_API_KEY` - The key for the administration application that will be set up automatically on the first run. Ideally should be 32 characters long and contain only `[a-z0-9]`, as that is how the REST API internally generates new application keys (**required**).\n- `LEADERBOARD_ADMIN_API_SECRET` - The secret for the administration application. Ideally should be 32 characters long and contain only `[a-z0-9]`, as that is how the REST API internally generates new application secrets (**required**).\n- `LEADERBOARD_AUTH_SECRET` - The secret used to sign JWT tokens for authentication. Should be minimal 32 characters long (**required**).\n- `LEADERBOARD_AUTH_AUDIENCE` - The audience used to verify JWT tokens for authentication. Defaults to `leaderboards-api`.\n- `LEADERBOARD_SERVER_HOST` - The listen address for the HTTP server that serves the REST API. Defaults to `0.0.0.0` for IPv4 and `::` for IPv6.\n- `LEADERBOARD_SERVER_PORT` - The listen port for the HTTP server. Defaults to `80`.\n- `LEADERBOARD_SERVER_IPV6_ONLY` - Set to `true` if the HTTP server should only listen on IPv6. Defaults to `false`.\n- `LEADERBOARD_LOGGING_LEVEL` - The logging level for the REST API. One of `debug`, `verbose`, `info`, `warn`, `error`. Defaults to `info`.\n\n## Local development\n\nInstall Node.js and npm, then run the following commands to install the dependencies and serve the REST API in a development server that watches for file changes using [Nodemon](https://nodemon.io/):\n\n```bash\n$ npm install\n$ npm run dev\n```\n\n## License\n\nThis package is licensed under the GNU LGPL 3.0 license. See the [license file](LICENSE.txt) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudunegames%2Fleaderboards-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faudunegames%2Fleaderboards-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faudunegames%2Fleaderboards-api/lists"}