Deploy calm-fair
GitHub PR lifecycle tracker for Slack: reviews, reactions, cleanup
GitHub-Slack PR 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, andchannels:historyscopes - A GitHub personal access token with
repoandread:orgscope, 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-botGITHUB_TOKEN
Personal access token (repo, read:org)
SLACK_BOT_TOKEN
Bot token(xoxb-...)
GITHUB_REPO_NAME
Repository name
SLACK_CHANNEL_ID
Channel to post PR messages in
GITHUB_REPO_OWNER
GitHub org or username
SLACK_SIGNING_SECRET
From Slack app Basic Information
GITHUB_WEBHOOK_SECRET
Secret set on the GitHub webhook