skip to content
enes.fyi logoenes.fyi

I Built a Slack Kudos App in One Hour and Saved $1,440/Year

/ 4 min read

Table of Contents

Our team at Hardal says “thank you” in Slack. We used a popular kudos app for this. It works well. It also sends an invoice.

The price is about $3 per person each month. We are 40 people at Slack. So the math is short:

$3 x 40 people x 12 months = $1,440 per year

That is a lot of money for a clap button.

I like kudos. I do not like this invoice. So I opened my terminal.

Cost before and after

The speedrun rule

In video games, a speedrun is a race against the clock. Players finish the game as fast as possible. They learn the best route. They skip every step that is not necessary.

I used the same rule for this app. My goal was one working app in one hour. No perfect code. No beautiful architecture. Only the route.

The decision that saved the hour

First, I made one important decision. I did not write a server.

A classic Slack app needs a web server. The server must run all day and all night. You pay for it every month. You watch it. You fix it at 2 a.m.

Slack has a second option. Its name is the “Run on Slack” platform. You write TypeScript with Deno. Slack runs your code on its own machines. Slack also gives you a small database. The word for this database is “datastore”.

The extra cost is $0. My Slack plan already pays for it. This decision saved most of my hour.

Classic app versus Run on Slack

The route

I cut the app down to five decisions:

  1. One channel. All kudos go to the same channel. Nobody picks a channel.
  2. Our own values as tags. Passion, Efficiency, Agility, Responsibility, Learning.
  3. A clap amount. The sender picks 1 to 5 claps.
  4. A “Clap this too” button for everybody else.
  5. Our Hardal mascot as the app icon.

Then I typed slack deploy. The app went live.

How the app works

The flow is very short. A user clicks a shortcut link. Slack opens a form. My code picks a random GIF. Slack posts the message in the channel.

The main flow

The form asks four questions:

  • Who gets the kudos?
  • What do you want to say?
  • How many claps? (1 to 5)
  • Which company values? (pick one or more)

The result looks like this in the channel:

@Teo received 4x 👏 from @Ecem
> You saved our launch yesterday. Thank you!
`Passion` `Responsibility`
[ a random GIF ]
[ Clap this too 👏 ]

The button was the only hard part. This platform keeps a button alive only while my function stays open. So my function never closes. It is a small hack, but it works today. The button also follows one rule: one clap per person. Then it writes a short reply in the thread.

The clap button flow

The GIFs taught me a lesson too. At first, every company value pointed to one GIF tag. So the app picked from only 14 to 19 GIFs, not from the whole list. People saw the same GIFs every day. Somebody asked me: “Is your random function broken?” It was not broken. I deleted the filter, and now the app picks from all 219 GIFs.

The GIF pool before and after

I also built a weekly clap budget and deleted it two days later. Nobody wants a limit on kind words.

What I lost

I am honest about the limits:

  • No real slash command. A slash command needs a web server. I do not have one. People use the shortcut link or the ⚡ menu.
  • The button hack is fragile. My function stays open forever. Slack does not recommend this. It can stop one day.
  • A paid Slack plan is necessary. This platform is not available on the free plan.
  • No auto-deploy. After every code change, I run slack deploy by hand.

What I won

  • $1,440 per year. The new cost is $0.
  • Full control. I change the values, the GIFs, the message text and the rules in one file.
  • Our own face. The icon is the Hardal mascot, not a vendor logo.
  • Speed. The first version went live in one hour. Every later change takes minutes.

Should you do this?

Ask one question first: is this paid app a product, or is it a feature?

A kudos app is a feature. It is a form, a message, a counter and a GIF list. You can build it in an evening.

Some paid apps are real products. They do analytics, dashboards, reports and deep HR work. Do not rebuild those in one hour. You will lose.

But for a clap button? Open your terminal. Start the timer.

The stack

Part Choice
Platform Slack “Run on Slack” — Slack hosts the code
Language TypeScript on Deno 2.9.5
SDK deno-slack-sdk 2.15.1, deno-slack-api 2.8.0
CLI Slack CLI 4.6.0
Storage 1 Slack datastore
Code 2 custom functions, 1 workflow, 1 shortcut trigger
GIFs 219 links, all tested
Servers 0

I wrote the app in Claude Code with Claude Sonnet 5. I built the first version on 6 August 2026 in about one hour. I shipped the small fixes on 7 August 2026.