{"id":31923134,"url":"https://github.com/rocketchat/opensource-contribution-leaderboard","last_synced_at":"2025-10-13T23:44:26.721Z","repository":{"id":42100309,"uuid":"182657052","full_name":"RocketChat/Opensource-Contribution-Leaderboard","owner":"RocketChat","description":"Open Source project contributors tracking leaderboard built with :heart:  in  NodeJS 😉","archived":false,"fork":false,"pushed_at":"2024-02-08T12:58:21.000Z","size":1379,"stargazers_count":38,"open_issues_count":15,"forks_count":46,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-05-01T11:29:33.269Z","etag":null,"topics":["community-building","community-management","gsoc","gsoc-contribution-leaderboard","leaderboard","nodejs","opensource-projects","students"],"latest_commit_sha":null,"homepage":"https://gsoc.rocket.chat","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RocketChat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-04-22T08:23:43.000Z","updated_at":"2024-04-17T18:27:41.000Z","dependencies_parsed_at":"2023-02-19T18:01:01.149Z","dependency_job_id":null,"html_url":"https://github.com/RocketChat/Opensource-Contribution-Leaderboard","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/RocketChat/Opensource-Contribution-Leaderboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FOpensource-Contribution-Leaderboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FOpensource-Contribution-Leaderboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FOpensource-Contribution-Leaderboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FOpensource-Contribution-Leaderboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RocketChat","download_url":"https://codeload.github.com/RocketChat/Opensource-Contribution-Leaderboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RocketChat%2FOpensource-Contribution-Leaderboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279017231,"owners_count":26086016,"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-10-13T02:00:06.723Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","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":["community-building","community-management","gsoc","gsoc-contribution-leaderboard","leaderboard","nodejs","opensource-projects","students"],"created_at":"2025-10-13T23:44:15.232Z","updated_at":"2025-10-13T23:44:26.715Z","avatar_url":"https://github.com/RocketChat.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Opensource-Contribution-Leaderboard](https://socialify.git.ci/RocketChat/Opensource-Contribution-Leaderboard/image?description=1\u0026descriptionEditable=Open%20Source%20Contribution%20Tracking%20Leaderboard\u0026language=1\u0026theme=Light)\n\n![](./docs/images/demo.png)\n\n## Introduction\n\nAn open source contributors leaderboard for your developers community, Github organization, or Google Summer of Code (GSoC) organization. Contributors can track their position on the leaderboard based on the PRs, commits, and issues they've completed across the repositories of interest across your Github organization . Proudly created and maintained by the GSoC 2019-2021 students and the wider [Rocket.Chat community](https://github.com/RocketChat).\n\n## Benefits\n- Encourage contributors to improve their position - by increasing contribution to your organization\n- Easy to setup and administer\n- Realtime organization - wide visibility to top contributors.\n\n## Main Features\n- Track commits/PRs/issues for contributors and GSoC student candidates in real time\n- At a glance view of participating top students\n- Easy administration to add students (even before they have made their very first contribution)\n- Requires no database or other environments - Only what you need to do is to ensure that your Node.js works well\n- Real-time updation of results - Contributions get updated real-time after server start without the need to refresh.\n\n## Deploy with Docker \n\nUse `docker-compose` to deploy directly\n\n```\ndocker-compose up -d\n```\n\nThe configuration file (`src/server/config.json`) can be easily modified locally to reflect changes on the container. The data gets backed up at `/data` inside the container.\n\nOR Use the automated build image of our [most recent release](https://hub.docker.com/r/rohanlekhwani/opensource-contribution-leaderboard)\n\n```\ndocker pull rohanlekhwani/opensource-contribution-leaderboard:latest\n```\n\nand then run\n\n```\ndocker run -p 8080:8080 -d rohanlekhwani/opensource-contribution-leaderboard\n```\n\n## Quick Start\nClone the repository to your local machine and switch into the project root directory:\n````bash\ngit clone git@github.com:RocketChat/Opensource-Contribution-Leaderboard.git\ncd Opensource-Contribution-Leaderboard\n````\nCopy `config-example.json` to `config.json` in the **src/server** directory. Add your Github Auth Token and Organization name and other keys in it as following:\n````bash\n{\n  \"organization\": \"OrgName\",\n  \"organizationHomepage\": \"https://\u003cOrgName\u003e/\",\n  \"organizationGithubUrl\": \"https://github.com/\u003cOrgName\u003e\",\n  \"authToken\": \"\",\n  \"adminPassword\": \"123456\",\n  \"delay\": \"10\",\n  \"serverPort\": \"62050\",\n  \"contributors\": []\n}\n````\nThen switch to the project root directory, install the dependencies:\n````bash\ncd ../../\nnpm run add\n````\n\nAnd then you can read [Development](#development) part or [Production](#production) part for the next step.\n## Development\nSwitch your path to the project base directory:\n````bash\nnpm start\n````\nYou will see the GSOC Contribution Leaderboard in the [http://localhost:8080](http://localhost:8080) if all works well. Then open a new terminal window (or tab) and enter the following commands to start your backend service:\n````bash\nnpm run serve\n````\n**Note:** If the backend service is not started, the contributions data will not be refreshed.\n\n### Develop Administration Panel\nYou need to start another instance if you'd like to develop administration panel, open a new terminal window (or tab) and try following commands:\n````bash\ncd admin\nnpm start\n````\n\n## Production\nGenerate the static files first by running the following command:\n````bash\nnpm run build\ncd dist/server\nnpm install pm2 -g # run this command on your server if pm2 is not installed.\npm2 start app.js --name \"GSOC-Contribution-Leaderboard\" # start the backend service\n````\n\n## Automated Data Fetch REST API\nREST API endpoints are available to fetch important leaderboard data real-time. \n\nThe API uses the cached `data.json` file which is created and regularly updated on starting up the server. This means that if the API is called in the middle of a data fetch cycle, the data returned by it at any time would be based off the data present in the `data.json` at that time. Since the leaderboard itself displays data using the `data.json` file, the data fetched by the API and that displayed on the leaderboard will *always be consistent* at any given time.\n\nDetails about the API endpoints and their responses can be found in the [REST-API](/REST-API.md) file. \n\n## Acknowledgement\nThis project is inspired by [GSOC-Contribution-Leaderboard](https://github.com/shubhsherl/GSoC-Contribution-Leaderboard/). Thanks to the Python team for the work.\n\n## License\nThis project is open source under the Licence [MIT](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fopensource-contribution-leaderboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frocketchat%2Fopensource-contribution-leaderboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frocketchat%2Fopensource-contribution-leaderboard/lists"}