---
title: "Deploy calm-fair"
description: "GitHub PR lifecycle tracker for Slack: reviews, reactions, cleanup"
category: "Bots"
url: https://railway.com/deploy/calm-fair
---

# Deploy calm-fair

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

**[Deploy calm-fair on Railway](https://railway.com/template/calm-fair)**

- **Creator:** Yogen P's Projects
- **Category:** Bots
- **Total deploys:** 1

## Template content

### GitHub-Slack PR Bot

- **Source:** yogen-p/github-pr-slack-bot

## Documentation

# 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                       
                                                      
  - [Slack API — Create an app](https://api.slack.com/apps)                                                                                                                                                                                                                          
  - [GitHub — Personal access tokens](https://github.com/settings/tokens)
  - [GitHub — Configuring webhooks](https://docs.github.com/en/webhooks/using-webhooks/creating-webhooks)                                                                                                                                                                            
                                                    
  ### Implementation Details                                                                                                                                                                                                                                                         
                                                    
  The bot uses [@slack/bolt](https://github.com/slackapi/bolt-js) for the Slack integration and [@octokit/rest](https://github.com/octokit/rest.js) 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.      

## Similar templates

- [Telegram JavaScript Bot](https://railway.com/deploy/5lRkWa) — A template for Telegram bot in JavaScript using grammY
- [Cobalt Tools [Updated Sep ’26]](https://railway.com/deploy/cobalt) — Cobalt Tools [Sep ’26] (Media Downloader, Converter & Automation) Self Host
- [Telegram Gateway](https://railway.com/deploy/railway-telegram-gateway) — Multi-bot Telegram webhook gateway with WebSocket event streaming

Open this page in a browser: https://railway.com/deploy/calm-fair
