Railway

Deploy calm-fair

GitHub PR lifecycle tracker for Slack: reviews, reactions, cleanup

Deploy calm-fair

GitHub-Slack PR Bot

yogen-p/github-pr-slack-bot

Just deployed

Deploy and Host calm-fair on Railway

calm-fair is a Slack bot that tracks GitHub pull request activity in real time. It posts new PRs to your channel, reacts with emoji as reviews come in (✅ approved, 🐰 changes requested), removes stale reactions when new commits are pushed, and deletes the message ─ automatically when a PR is merged or closed.

About Hosting calm-fair

calm-fair is a lightweight Node.js server that listens for two types of incoming events: GitHub webhook payloads (pull request and review activity) and Slack mention events (team queries like "needs review" or "oldest PR"). It maintains a small JSON store mapping PR numbers to Slack message timestamps, which it uses to update reactions and delete messages as PR state changes. The server needs to be always-on with a stable public URL so GitHub and Slack can reach it reliably — Railway handles both out of the box.

Common Use Cases

  • Automatically notify your team's Slack channel when a new PR is opened, without anyone having to post it manually
  • Get a live visual indicator of review status on each PR message without leaving Slack
  • Ask the bot for a quick summary of outstanding review work: which PRs need a first review, which are approved and ready to merge, and which have been sitting the longest

Dependencies for calm-fair Hosting

  • A Slack app with chat:write, chat:delete, reactions:write, reactions:read, app_mentions:read, and channels:history scopes
  • A GitHub personal access token with repo and read:org scope, and a webhook configured on your repository

Deployment Dependencies

Implementation Details

The bot uses @slack/bolt for the Slack integration and @octokit/rest for GitHub API queries. All configuration is driven by environment variables — including the emoji used for reactions — so no
code changes are needed to customise it for your team.

Set your GitHub webhook payload URL to:
```
https://your-railway-url.railway.app/github/webhook ```
And your Slack Event Subscriptions request URL to: ```
https://your-railway-url.railway.app/slack/events ```

Add a Railway Volume mounted at /app/data to persist PR state across redeploys.

Why Deploy calm-fair on Railway?

Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.

By deploying calm-fair on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.


Template Content

GitHub-Slack PR Bot

yogen-p/github-pr-slack-bot

More templates in this category

View Template
Foundry Virtual Tabletop
A Self-Hosted & Modern Roleplaying Platform

Lucas
View Template
(v1) Simple Medusa Backend
Deploy an ecommerce backend and admin using Medusa

Shahed Nasser
View Template
peppermint
Docker-compose port for peppermint.sh

HamiltonAI