Newsletter
Join the Community
Subscribe to our newsletter for the latest news and updates
A TypeScript template for building Slack apps with Bolt and Hono, deployable to Vercel.
Slack Bolt with Hono is a TypeScript boilerplate from Vercel Partner Solutions that scaffolds a Slack app using the Bolt for JavaScript framework on a Hono server, with one-click deployment to Vercel.
Slack Bolt with Hono is a starter repository for building Slack apps in TypeScript. It takes a Slack app manifest and two environment variables (SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET) as input, and produces a running Slack bot that responds to Slack events. The template runs on Node.js, uses Hono as the HTTP framework, and integrates @vercel/slack-bolt's VercelReceiver to handle Slack's request verification. The project is maintained by Vercel Partner Solutions and is available as a public GitHub repository under the vercel-partner-solutions organization.
src/index.ts defines the POST handler that receives Slack events, with routing that matches the URLs declared in the app manifest.src/bolt/app.ts initializes VercelReceiver from @vercel/slack-bolt, which wraps the Bolt app for Vercel's serverless environment.src/bolt/listeners organizes event handlers by Slack Platform feature, such as a messages folder for message events; the sample listener answers "hello" with "world!".manifest.json holds the app's permissions, scopes, and endpoints, so you create the Slack app by pasting its contents into the Slack API dashboard.pnpm dev:tunnel starts a helper that automatically launches the app with ngrok for local Slack testing.request_url and url fields in the manifest to https://your-app-domain/api/slack/events.The template wires a Slack app manifest to a Bolt listener layer and a Hono HTTP server. During development, the Slack CLI's slack run command starts the server and connects it to ngrok using the NGROK_AUTH_TOKEN in your .env file. For production, Vercel handles the POST requests to /api/slack/events, and the manifest URL fields are changed from the local ngrok domain to your deployed domain.
You need SLACK_BOT_TOKEN from the Slack app's Install App page and SLACK_SIGNING_SECRET from the Basic Information tab. For local development, you also need NGROK_AUTH_TOKEN to run the ngrok helper script.
In production, the app receives Slack events at the /api/slack/events path on your deployed domain. The manifest's request_url and url fields point to this path, which matches the Hono route defined in src/index.ts.
The bundled message listener watches for the word "hello" in a channel and replies with "world!". It is a minimal example that confirms the whole pipeline from Slack to Bolt to Hono to a response.
Yes. The template is designed to be a generic starting point for Bolt for JavaScript apps. You install it as a Slack app, then extend or replace the listeners in src/bolt/listeners with your own event handling.
