Creating Slack apps doesn’t have to be hard and the easier it is, the more satisfying I find it. Because I enjoy creating places for people to communicate and collaborate more effectively, I want to work in a space designed for communication and collaboration. And that’s literally what Slack is for.
I place a lot of value on improving the developer experience for my colleagues as well as myself. However, what results in an amazing experience for others isn’t one for me if I have to do things the hard way. It’s just as important for my developer experience to be good as well. This is why I use the Slack CLI. Think of it as a gift from past me to future me.
With the CLI, the process to spin up an app takes me minutes. Using this tool, I can manage my app’s entire lifecycle, from creation and installation to administration from my IDE/terminal. From there, using the data formats and languages I already use, I create and update my apps in code, just how I like it. The CLI makes it easier for me to quickly go from “Wouldn’t it be cool if…” to an MVP without getting stuck in configuring the annoying parts like auth or pagination.
The CLI provides several templates to help me get going and include an app manifest to make configuration simpler. An app manifest is the core of a Slack app and serves as a reusable configuration file. This file lives with the code, making it easy to design my app without having to use the web UI.
Once I have created the app and configured the manifest file, I’m ready to write the code. Using the Bolt Framework, I can work fast while still maintaining app functionality and security. Bolt is supported in three languages: Python, Java, and Javascript to help me choose a language that works best for my project.
Bolt makes it painless to code the complicated parts that aren’t super fun (e.g. OAuth configuration and real-time event management). I really don’t like configuring OAuth and really do like when the framework does it for me.
However, if Bolt doesn’t quite get the job done, that’s ok too. I can use a Slack SDK to have more control over how my app is built. Using Typescript with the Deno SDK, I can also quickly or easily build functions that can be run in Workflows.
As a platform developer, I sometimes find creating UIs to be a bit of a black box. This is mostly because I come from an era where CSS meant moving boxes and praying. Thankfully those days are gone, but I’m still grateful for anything that makes that job less frustrating. Using Block Kit, I can configure any Surface in Slack without any undue suffering.
If I want a more visual hands on, Block Kit Builder helps me see this process in action. Using the builder to define what the blocks look like in my app helps me create the UI faster. Once it looks like I want it to, I just copy the JSON payload from the builder to my code.
After I’ve built out my app, I need to test it. Since testing in production isn’t my favorite pastime, I really appreciate having a full functionality sandbox to play in. The sandboxes available via the Slack Developer Program give me a free, secure environment where I can test my apps against all of Slack’s features. It feels good to be able to do the due diligence and be able to have the tools to effectively release a polished, professional app.
Once I’ve finished testing, I set up my app’s deployment to any platform I want. This includes Slack apps with internal automation features. (Check out this Heroku example!).
The Slack platform is there to use and it’s there to make your life easier. By giving me a positive developer experience, the Slack CLI helps me create better ways to communicate and collaborate. Consider it a gift from current me to future me. I know I’ll thank myself later.