{"id":26221479,"url":"https://github.com/dxheroes/dx-scanner","last_synced_at":"2025-05-16T13:04:37.841Z","repository":{"id":38455057,"uuid":"199797123","full_name":"DXHeroes/dx-scanner","owner":"DXHeroes","description":"CLI tool that allows you to measure quality of a team work and an app based on your source code.","archived":false,"fork":false,"pushed_at":"2025-05-13T22:41:39.000Z","size":8806,"stargazers_count":82,"open_issues_count":36,"forks_count":45,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-05-14T00:31:06.879Z","etag":null,"topics":["best-practices","ci","cli","code-review","command-line-tool","developer-experience","developerexperience","dx-recommendations","dx-scanner","dxscanner","java","javascript","practices","ruby","typescript"],"latest_commit_sha":null,"homepage":"https://dxscanner.io","language":"TypeScript","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/DXHeroes.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["DXHeroes"]}},"created_at":"2019-07-31T06:50:27.000Z","updated_at":"2025-03-03T09:26:26.000Z","dependencies_parsed_at":"2023-09-24T20:26:25.473Z","dependency_job_id":"74d51406-b3b3-465f-b7b0-c9105bbd229c","html_url":"https://github.com/DXHeroes/dx-scanner","commit_stats":{"total_commits":2076,"total_committers":46,"mean_commits":"45.130434782608695","dds":0.6724470134874759,"last_synced_commit":"3704f5ad7c9996b2229e23b0dcd1153b48525ecc"},"previous_names":[],"tags_count":262,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DXHeroes%2Fdx-scanner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DXHeroes%2Fdx-scanner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DXHeroes%2Fdx-scanner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DXHeroes%2Fdx-scanner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DXHeroes","download_url":"https://codeload.github.com/DXHeroes/dx-scanner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254427622,"owners_count":22069605,"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","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":["best-practices","ci","cli","code-review","command-line-tool","developer-experience","developerexperience","dx-recommendations","dx-scanner","dxscanner","java","javascript","practices","ruby","typescript"],"created_at":"2025-03-12T16:20:36.546Z","updated_at":"2025-05-16T13:04:37.799Z","avatar_url":"https://github.com/DXHeroes.png","language":"TypeScript","funding_links":["https://github.com/sponsors/DXHeroes"],"categories":[],"sub_categories":[],"readme":"[![Tweet](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/intent/tweet?text=DX%20Scanner%20is%20an%20open%20source%20CLI%20tool%20that%20allows%20you%20to%20“measure”%20Developer%20Experience%20directly%20based%20on%20your%20source%20code.\u0026url=https://github.com/DXHeroes/dx-scanner\u0026via=dx_heroes\u0026hashtags=developer-experience,dxheroes,developers)\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://dxscanner.io\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/DXHeroes/dx-scanner/blob/master/docs/logo.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n[![Slack](https://img.shields.io/badge/slack-@DeveloperExperience-%234A154B.svg?logo=slack)](https://bit.ly/slack_developer_experience)\n[![Pipeliner Roadmap](https://img.shields.io/badge/public%20roadmap-https%3A%2F%2Froadmap.dxheroes.io-%23108DE4)](https://roadmap.dxheroes.io)\n\n[![Version](https://img.shields.io/npm/v/dx-scanner.svg)](https://npmjs.org/package/dx-scanner)\n[![Travis (.org)](https://img.shields.io/travis/DXHeroes/dx-scanner/master)](https://travis-ci.org/DXHeroes/dx-scanner)\n[![codecov](https://codecov.io/gh/DXHeroes/dx-scanner/branch/master/graph/badge.svg)](https://codecov.io/gh/DXHeroes/dx-scanner)\n![last commit](https://img.shields.io/github/last-commit/DXHeroes/dx-scanner)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/w/DXHeroes/dx-scanner)\n[![Downloads/week](https://img.shields.io/npm/dw/dx-scanner.svg)](https://npmjs.org/package/dx-scanner)\n![GitHub contributors](https://img.shields.io/github/contributors/DXHeroes/dx-scanner)\n[![All Contributors](https://img.shields.io/badge/all_contributors-5-orange.svg)](#contributors-)\n[![NPM](https://img.shields.io/npm/l/dx-scanner)](LICENSE)\n![TypeScript](https://img.shields.io/badge/%3C%2F%3E-Typescript-blue)\n\n---\n\n## What is DX Scanner?\n\nDX Scanner is an open source CLI tool that allows you to “measure” Developer Experience directly based on your source code. DX Scanner recommends practices that can help you with improving your product development. You can fix some problems automatically with just one command.\n\n### What language is supported?\n\nLanguage | Supported\n------------ | -------------\nJavaScript/TypeScript | ✅\nJava/Kotlin | ✅\nPython | ✅\nGo | ✅\nPHP | ✅\nRuby | ✅\nRust | ✅\nC++ | 🚧\nC# | 🚧\nAndroid | 🚧\nSwift | 🚧\n\n## Table of Contents\n\n\u003c!-- toc --\u003e\n* [Supported version control systems](#Which-version-control-system-can-you-use)\n* [Getting Started](#Getting-Started-)\n  * [Installation](#Installation)\n  * [Usage](#Usage)\n    * [Commands](#Commands)\n    * [Options for dx-scanner run](#options-for-dx-scanner-run)\n    * [Auto-fixer](#Auto-fixer)\n* [Supported Languages](#What-language-is-supported)\n* [Configuration](#configuration-%EF%B8%8F)\n  * [Practices](#Practices)\n  * [CI Mode](#CI-mode)\n  * [GitHub CI Action](#GitHub-Ci-Action)\n* [Support](#support-%EF%B8%8F-%EF%B8%8F)\n* [Contributing](#Contributing--)\n  * [Roadmap](#Roadmap)\n\u003c!-- tocstop --\u003e\n### Which version control system can you use?\n\nSure you can use `GitHub`. You can also use `GitLab` and `Bitbucket` no matter if it is public or private repo!\n\nexamples:\n```\ndx-scanner run https://github.com/DXHeroes/dx-scanner\n\ndx-scanner run https://gitlab.com/ubon-refer/smart-refer-api\n\ndx-scanner run https://bitbucket.org/maras333/node-api-with-ts\n```\n\n## Getting Started 🏁\n\n### Dependencies\n- npm ([how to install npm](https://www.npmjs.com/get-npm))\n- git ([how to install git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git))\n- (optional) yarn ([how to install npm](https://www.npmjs.com/get-npm) and [yarn](https://yarnpkg.com/getting-started/install))\n\n### Installation\n\n- with NPM\n\n  ```npm install -g dx-scanner```\n- with Yarn\n\n  ```yarn global add dx-scanner```\n\n### Usage\n\u003c!--\nQuick start\n--\u003e\n```\n  dx-scanner run [path] [options]\n```\n\nExample:\n```\n  dx-scanner run https://github.com/DXHeroes/dx-scanner\n```\n\n\u003c!--\nHelp for command dxs\n--\u003e\n#### Commands\n```\nUsage: dx-scanner [command] [options]\n\nOptions:\n  -V, --version         output the version number\n  -l --log              Write a debug and dxs output log to ./dxscanner.log\n  -h, --help            display help for command\n\nCommands:\n  run [options] [path]  Scan your project for possible DX recommendations\n  init                  Initialize DX Scanner configuration\n  practices [options]   List all practices id with name and impact\n  help [command]        display help for command\n\nAliases:\n  dxs\n  dxscanner\n```\n\n#### Options for `dx-scanner run`\n\n```\nUsage: dx-scanner run [path] [options]\n\nScan your project for possible DX recommendations\n\nOptions:\n  -a --authorization \u003cauthorization\u003e  credentials to the repository (in format \"token\" or \"username:token\"; can be set as ENV variable DXSCANNER_GIT_SERVICE_TOKEN)\n  -t --apiToken \u003capiToken\u003e            credentials to DX Scanner, can be set as ENV variable DXSCANNER_API_TOKEN\n  --apiUrl \u003capiUrl\u003e                   URL of DX Scanner API, can be set as ENV variable DXSCANNER_API_URL (default: https://provider.dxscanner.io/api/v1)\n  --ci                                CI mode (default: false)\n  -d --details                        print details in reports\n  --fail \u003cimpact\u003e                     exits process with code 1 for any non-practicing condition of given level (high|medium|small|hint|off|all) (default: \"off\")\n  --fix                               tries to fix problems automatically (default: false)\n  --fixPattern \u003cpattern\u003e              fix only rules with IDs matching the regex\n  -j --json                           print report in JSON (default: false)\n  --html [path]                       save report in HTML file (default: false, default path: ./report.html)\n  -r --recursive                      scan all components recursively in all sub folders (default: false)\n  --no-recursive                      disable recursive scan in CI mode\n  -h, --help                          output usage information\n\nExamples:\n  dx-scanner run\n  dx-scanner run ./ --fail=high\n  dx-scanner run github.com/DXHeroes/dx-scanner\n```\n\u003c/details\u003e\n\n#### Auto-fixer\n\nFix problems detected by DX Scanner automatically.\n```\ndx-scanner run [PATH] --fix\n```\n\nThis will try to fix all *fixable* practices which are not being practices yet.\nIf you want to omit a practice from automatic fixing, you can do it in the configuration file (see below).\n\nYou can also specify `fixPattern` flag to fix only a subset of *fixable* practices.\n```\ndx-scanner run [PATH] --fix --fixPattern=lint\n```\n\nPlease note, that `fixPattern` flag overrides `fix` settings from configuration file. Therefore practices omitted from fixing by configuration file, but included through `fixPattern` will be fixed.\n\n## Configuration ⚙️\nAdd ```dxscannerrc.*``` config file to change default configuration settings. It can be a ```.json```, ```.yml```, or even a dotfile!\n\nYou can also run ```dx-scanner init``` to initialize config automatically.\n\n### Practices\nYou can switch off practices that you do not want to scan, change their impact level, and even override their default values. To do so, refer to the id of the practice and specify your configuration.\n\n\u003cdetails\u003e\n\u003csummary\u003eList of All Practices 🔍\u003c/summary\u003e\n\nPractice | Impact | Language Independent | JavaScript/TypeScript | Java/Kotlin | Python | PHP\n------------- | ------------- | ------------- | ------------- | ------------- | ------------- | -------------\nCreate a Readme File | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nCreate a Changelog File | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nCreate a License File | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nCreate a Lockfile | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nCreate a .gitignore | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nWrite in Typescript | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nSet .gitignore Correctly | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ✅ | ✅ | ❌ | ❌\nSet Readme File Correctly | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nUse Continuous Integration | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nUse Docker | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nUse .editorconfig | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nFormat your code automatically | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse a Linter | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ✅ | ✅ | ✅\nESLint Without Errors | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse a different linter | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse JS Frontend Testing Framework | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse JS Frontend Build Tools | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse JS Backend Testing Frameworks | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse a JS Logging Library | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUse Package Management | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ✅ | ✅ | ❌ | ❌\nConfigure Scripts in package.json | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\nUpdate Dependencies of Major Level | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ✅ | ✅ | ❌ | ❌\nUpdate Dependencies of Minor and Patch Level | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ✅ | ✅ | ❌  | ❌\nDo PullRequests | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nBreak down large pull requests into smaller ones | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nSolve Pull Requests Continuously | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nSolve Issues Continuously | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nWrite Commit Messages by Convention | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ✅ | ✅ | ✅ | ✅ | ✅\nUse Mocking Frameworks for Tests  | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ✅ | ✅ | ❌ | ❌\nUse Testing Frameworks | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nUse a Java Logging Dependency | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nUse Java Class Naming Convention | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nSpecify Versions of Dependencies | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nStore Environment Variables Using .properties Files | \u003cspan style=\"color:yellow\"\u003emedium\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nUse Java Code Styles | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nUse Java Logger Configuration Files | \u003cspan style=\"color:green\"\u003esmall\u003c/span\u003e | ❌ | ❌ | ✅ | ❌ | ❌\nSecurity vulnerabilities detected | \u003cspan style=\"color:red\"\u003ehigh\u003c/span\u003e | ❌ | ✅ | ❌ | ❌ | ❌\n\u003c/details\u003e\n\nPossible impact:\n```\nhigh\n\nmedium\n\nsmall\n\nhint\n\noff\n```\n\nExample `dxscannerrc.json`:\n\n```json\n{\n    \"practices\": {\n        \"JavaScript.GitignoreCorrectlySet\": \"medium\",\n        \"JavaScript.LoggerUsed\": \"off\",\n        \"LanguageIndependent.DoesPullRequests\": {\n          \"impact\": \"small\"\n        },\n        \"JavaScript.ESLintWithoutErrorsPractice\": {\n          \"fix\": true,\n          \"override\": {\n            \"lintFilesPatterns\": [\".internal/**/*.js\", \"*.js\"],\n            \"ignorePatterns\": []\n          }\n        },\n        \"LanguageIndependent.ThinPullRequestsPractice\": {\n          \"impact\": \"high\",\n          \"override\": {\n            \"measurePullRequestCount\": 500\n          }\n        }\n    }\n}\n```\n\nIn order to override the default values of certain practices, specify `override` and nest the correct overridable variables.\n\nExample `dxscannerrc.yaml`:\n\n```yaml\n---\npractices:\n  JavaScript.GitignoreCorrectlySet: medium\n  JavaScript.LoggerUsed: 'off'\n  LanguageIndependent.DoesPullRequests:\n    impact: small\n  JavaScript.ESLintWithoutErrorsPractice:\n    fix: true\n    override:\n      lintFilesPatterns: ['.internal/**/*.js', '*.js']\n      ignorePatterns: []\n  LanguageIndependent.ThinPullRequestsPractice:\n    impact: high\n    override:\n      measurePullRequestCount: 500\n```\n\n### CI Mode\nWhen running DX Scanner with `--ci` flag, it runs in CI Mode. In CI Mode, DX SCanner uses `CIReporter` for its output and runs recursively by default (i.e. the `--recursive` flag is turned on).\n\nIf you want to disable recursive scan in CI mode, use the `--no-recursive` flag.\n\n### Github CI Action\n\n**Basic example**: run DX Scanner on each push to the repo\n\nCreate `.github/workflows/main.yml`.\n\n```yml\nname: DX Scanner\non: push\njobs:\n  dx-scanner:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v1\n      - name: Runs DX Scanner on the code\n        uses: DXHeroes/dx-scanner@master\n        with:\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n```\n\n[Generate your Github personal token](https://github.com/settings/tokens/new) and [set it as an encrypted secret](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets) named `GITHUB_TOKEN`.\n\n## Score Computation 💯\nThe impact of each practice is represented by a specific value. DX Scanner uses these values to calculate the overall DX Score.\n\n```\nhigh = 100 points\n\nmedium = 75 points\n\nsmall = 50 points\n\nhint = 25 points\n```\n\nThe practices you have switched off are not included in the calculation (0 points).\n\n## Support 🦸‍♀️ 🦸‍♂️\nDidn't you find what you expected? Contact us via our public [Slack!](https://bit.ly/slack_developer_experience)\n\n## Contributing 👩‍💻 👨‍💻\nFeel free to contribute to our DX Scanner. Please follow the [Contribution Guide](CONTRIBUTING.md).\n\n### Roadmap \n\nSee our [public roadmap](https://roadmap.dxheroes.io).\n\n## License 📝\n\nThe DX Scanner open source project is licensed under the [MIT](LICENSE).\n\n## Contributors ✨\n\nMany thanks to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):\n\n\u003c!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --\u003e\n\u003c!-- prettier-ignore-start --\u003e\n\u003c!-- markdownlint-disable --\u003e\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/prokopsimek\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/5487217?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eProkop Simek\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=prokopsimek\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-prokopsimek\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/adelkahomolova\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/53510747?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eadelkah\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=adelkahomolova\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#maintenance-adelkahomolova\" title=\"Maintenance\"\u003e🚧\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/radektheloner\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/7268060?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eRadek Holý\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=radektheloner\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.applifting.cz\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/346066?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eVratislav Kalenda\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=Vratislav\" title=\"Code\"\u003e💻\u003c/a\u003e \u003ca href=\"#ideas-Vratislav\" title=\"Ideas, Planning, \u0026 Feedback\"\u003e🤔\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"http://www.petrvnenk.com\"\u003e\u003cimg src=\"https://avatars2.githubusercontent.com/u/1933654?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003ePetr Vnenk\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=vnenkpet\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/ryzzaki\"\u003e\u003cimg src=\"https://avatars1.githubusercontent.com/u/31356058?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003eCuong Nguyen\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=ryzzaki\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n    \u003ctd align=\"center\"\u003e\u003ca href=\"https://github.com/vlasy\"\u003e\u003cimg src=\"https://avatars3.githubusercontent.com/u/13099178?v=4\" width=\"100px;\" alt=\"\"/\u003e\u003cbr /\u003e\u003csub\u003e\u003cb\u003evlasy\u003c/b\u003e\u003c/sub\u003e\u003c/a\u003e\u003cbr /\u003e\u003ca href=\"https://github.com/DXHeroes/dx-scanner/commits?author=vlasy\" title=\"Code\"\u003e💻\u003c/a\u003e\u003c/td\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n\u003c!-- markdownlint-enable --\u003e\n\u003c!-- prettier-ignore-end --\u003e\n\u003c!-- ALL-CONTRIBUTORS-LIST:END --\u003e\n\nThis project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Any kind of contributions are welcome!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdxheroes%2Fdx-scanner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdxheroes%2Fdx-scanner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdxheroes%2Fdx-scanner/lists"}