{"id":18425755,"url":"https://github.com/faforever/faf-league-service","last_synced_at":"2026-07-02T11:34:32.683Z","repository":{"id":40696544,"uuid":"277196076","full_name":"FAForever/faf-league-service","owner":"FAForever","description":"The league service of Forged Alliance Forever","archived":false,"fork":false,"pushed_at":"2025-04-02T11:44:38.000Z","size":20208,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":7,"default_branch":"develop","last_synced_at":"2025-04-13T19:50:20.812Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FAForever.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,"zenodo":null}},"created_at":"2020-07-04T22:46:41.000Z","updated_at":"2025-04-02T11:42:03.000Z","dependencies_parsed_at":"2024-08-15T22:41:16.783Z","dependency_job_id":"4acddac5-952e-4eec-be1a-7a69bbf56fd7","html_url":"https://github.com/FAForever/faf-league-service","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/FAForever/faf-league-service","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-league-service","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-league-service/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-league-service/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-league-service/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FAForever","download_url":"https://codeload.github.com/FAForever/faf-league-service/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FAForever%2Ffaf-league-service/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35045923,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-02T02:00:06.368Z","response_time":173,"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":[],"created_at":"2024-11-06T05:05:26.660Z","updated_at":"2026-07-02T11:34:32.659Z","avatar_url":"https://github.com/FAForever.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FA Forever - League Service\n\nThis is the [Forged Alliance Forever](http://www.faforever.com/) league service. It listens to the rating update messages, as specified in the config.py file, that the [server](https://github.com/FAForever/server) publishes to RabbitMQ and uses them to calculate league scores.\n\nYou can find a visual representation of the current schema on this projects [Github page](https://faforever.github.io/faf-league-service/relationships.html).\n\n## Installation\n\nInstall [docker](https://www.docker.com).\n\nThe following assumes the db container is called `faf-db`,\nthe database is called `faf-league`,\nand the root password is `banana`.\nCloning [faf-stack](https://github.com/FAForever/faf-stack)\nand running `scripts/init-db.sh` should set this up.\n\n\nAdditionally, the service needs a running RabbitMQ server, which can be started\nvia docker by running `scripts/local-rabbitmq.sh`.\nThis starts a RabbitMQ server on vhost `/faf-lobby`.\n\n## Setting up for development\n\nFirst make sure you have instances of `faf-db` and RabbitMQ running as described in the\ninstallation section. Then install the dependencies to a virtual environment\nusing pipenv:\n\n    $ pipenv install --dev\n\nIf you have just set up the database for development, you will have to apply the\ndatabase migrations manually by running\n\n    $ pipenv run migrate-develop\n\nYou can now start the service:\n\n    $ pipenv run devserver\n\n**Note** *The pipenv scripts are not meant for production deployment. For\ndeployment use `faf-stack`*\n\n## Running the tests\n\nMake sure to follow the setup steps above. Then run\n\n    $ pipenv run tests\n\nTo run the tests directly in PyCharm you need to add `--mysql_database=faf-league`\nin the Additional Arguments field in the Run Configuration.\n\n## Database migrations\n\nDatabase migrations are done using [yoyo](https://ollycope.com/software/yoyo).\nTo migrate run `yoyo apply` from inside the `pipenv`,\nsee `scripts/migrate_develop.sh` for a full example.\n\n# License\n\nGPLv3. See the [license](license.txt) file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffaf-league-service","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffaforever%2Ffaf-league-service","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffaforever%2Ffaf-league-service/lists"}