{"id":43083037,"url":"https://github.com/fshchudlo/merge-it-hot","last_synced_at":"2026-01-31T15:04:01.079Z","repository":{"id":232565556,"uuid":"765089442","full_name":"fshchudlo/merge-it-hot","owner":"fshchudlo","description":"Slack Bot that improves GitHub Pull Requests review experience by sending notifications to the Slack channels for the PR author and all the participants.","archived":false,"fork":false,"pushed_at":"2025-11-25T06:57:06.000Z","size":2758,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-28T14:42:18.294Z","etag":null,"topics":["codereview","developer-experience","devex","github","slack"],"latest_commit_sha":null,"homepage":"https://merge-it-hot.com/","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/fshchudlo.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2024-02-29T09:06:22.000Z","updated_at":"2025-11-25T06:57:08.000Z","dependencies_parsed_at":"2024-04-16T11:25:41.433Z","dependency_job_id":"4755e2ab-eb17-4d69-b1b4-5b4f089960a4","html_url":"https://github.com/fshchudlo/merge-it-hot","commit_stats":null,"previous_names":["fshchudlo/bitbucket-slack-connector","fshchudlo/merge-it-hot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/fshchudlo/merge-it-hot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fshchudlo%2Fmerge-it-hot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fshchudlo%2Fmerge-it-hot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fshchudlo%2Fmerge-it-hot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fshchudlo%2Fmerge-it-hot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fshchudlo","download_url":"https://codeload.github.com/fshchudlo/merge-it-hot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fshchudlo%2Fmerge-it-hot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28946083,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-31T14:26:55.697Z","status":"ssl_error","status_checked_at":"2026-01-31T14:26:52.545Z","response_time":128,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["codereview","developer-experience","devex","github","slack"],"created_at":"2026-01-31T15:03:58.845Z","updated_at":"2026-01-31T15:04:01.070Z","avatar_url":"https://github.com/fshchudlo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# merge-it-hot\n\n[Slack Bot](https://slack.dev/bolt-js/tutorial/getting-started) that keeps code review participants in the loop by\nsending pull requests notifications to the Slack.\n\n### Configuring dev environment\n\n- Install [Node.js and npm](https://nodejs.org) on your machine\n- Run `npm i` from the repo root directory\n\n### Running unit tests\n\n- Easy as ```npm run test```. Unit tests are not tied to Slack or GitHub, thus, you can run them in isolation.\n- Since I'm a lazy guy, tests use snapshots. You can update them by running ```npm run test:update-snapshots```\n\n### Running an app\n\n- Create [your own Slack application](https://slack.dev/bolt-js/tutorial/getting-started#create-an-app)\n  and [obtain required tokens](https://tools.slack.dev/bolt-js/getting-started/#tokens-and-installing-apps) to the\n  project env variables\n\n\u003e 💡 You can use [slack_app_manifest.yml](assets/slack_app_manifest.yml) file as a basis to create an app and\n\u003e assign all the required oauth scopes.\n\n- Run ```npm run docker:init``` to configure Postgres\n- Open [merge-it-hot-compose.yml](assets/merge-it-hot-compose.yml) `environment` section and provide relevant tokens\n- Run ```npm run docker:start``` to start an app in docker container\n\n\u003e 💡 If you'd like to run app locally, create the `.env` file in the project root directory and provide it with the\n\u003e values identical to [merge-it-hot-compose.yml](assets/merge-it-hot-compose.yml) `environment` section\n\u003e After that you can simply run an app with ```npm run start```\n\n### Running e2e-tests with an app\n\n- e2e tests will require real Slack and GitHub connections. Please refer to [Running an app](#running-an-app)\n  section above.\n- e2e-tests are implemented with [HTTP Client CLI](https://www.jetbrains.com/help/idea/http-client-cli.html). Thus, it\n  should be installed.\n- Fill `http-client.env.json` file with parameters you find relevant. If you want to use real data, consider creating\n  your own `http-client.private.env.json` config. It is already added to the `.gitignore`\n- Run ```npm run docker:start``` or ```npm run start``` to start the service\n- Run ```ijhttp .e2e-tests/e2e-test-requests.http``` from the project root directory.\n\n### Deploying the service\n- You can use provided `Dockerfile` to build an image and run it with ENV variables identical to variables\n  specified in `.env.example` described above\n- Please, be aware that _service is stateful_ since it caches channels and comments info. State stored in memory (\n  see `InMemoryCache` class and its' usages), that keeps implementation simple and efficiently serves\n  hundreds of pull requests. In case of service restart, cache will be gracefully restored. However,\n  if you need to run multiple instances or experience `Slack API` requests limit exceeding, you'll need to implement\n  some external cache.\n\n### Managing database structure\n\n- This project uses [TypeORM](https://typeorm.io/migrations) for database migrations. After modifying the schema, you\n  can apply migrations using\n  ```npm run migration:generate ./src/api-adapters/organization-settings-provider/migrations/\u003cMIGRATION NAME\u003e```\n- Migrations are automatically applied when the app starts, so no manual intervention is typically needed.\n- You can manage migrations process on your own with `npm run migration:run` and `npm run migration:revert` commands.\n\n### Useful links\n\n- [Slack apps configuration page](https://api.slack.com/apps)\n- [Slack blocks kit builder](https://app.slack.com/block-kit-builder)\n  and [full controls reference](https://api.slack.com/reference/block-kit/block-elements)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffshchudlo%2Fmerge-it-hot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffshchudlo%2Fmerge-it-hot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffshchudlo%2Fmerge-it-hot/lists"}