Our Slack Wiki

Ben Brown
Howdy
Published in
4 min readMay 21, 2015

As our company has grown, we have faced an increasing need to create documentation about who we are, what we do, and how we achieve results. This lead me to look for a wiki or knowledge base system that would provide an easy to use, reliable place for us to store and share information for our small team.

Our needs are simple, and my must-have feature list was short:

  • We like Markdown as a format for editing and sharing text
  • We need the ability to do some simple organization and categorization, but nothing that crazy
  • The content of the wiki needs to be quickly searchable
  • It has to integrate into Slack!

It is crucial that the information stored in the wiki be available at our fingertips. The goal of having a wiki is to help our team build, document and stick with defined processes and standards, to record all the important technical details in a place they can be quickly referenced, and to put this information to work for us. For that to happen, Slack integration is perhaps the most important feature for a tool like this to be successful in our organization.

I did some research. There are a lot of wiki tools available, most of which were far too feature-rich for our needs. But I couldn’t find one that had all 4 key features I needed — particularly the combination of Markdown and Slack integration.

So, I built one.

Built for Slack

The primary way we use and interact with our wiki is through Slack. Search queries are submitted using a custom slash command, and content updates are shared via a dedicated #wiki channel. We even use Slack for user authentication — if you can access our Slack, you can access our wiki.

Now, if anyone has a question or needs to refer to our documentation, they can do so without leaving the conversation.

It looks like this:

Our wiki is searchable from within Slack using a custom slash command. Search results appear in context with the conversation!

Markdown + YAML

Based on some positive experiences we’ve had recently using the Jekyll static site generator, and pulling inspiration from the existing wiki tool Wikitten, I decided to build in a mixture of Markdown for content and YAML for metadata. (If you don’t know what YAML is, don’t worry — it’s just a simple format for storing information in a text file.)

In addition to the text content of the wiki page, users can add additional metadata such as tags, folders, and other information that is useful for search and navigation, but doesn’t necessarily need to be displayed on the page.

With the help of Angular and the fantastic Ace code editor, I created a realtime editing and preview screen for creating and managing wiki pages.

It looks like this:

Our wiki pages have a block of YAML front matter at the top that defines metadata like what folder a page should live in. YAML, like Markdown, is a human readable, text-based format for storing information.

Data-driven Navigation

Instead of creating a folder system or some sort of category management tool, we allow the content of the wiki itself to define the navigation. As folders are defined in the YAML front matter of the wiki pages, they appear automatically in the navigation. Documents can be added to multiple folders, or none at all. After we moved everything into the new tool, we ended needing just 9 folders.

It looks like this:

No Database

Until we built the wiki, we’d been using a Github repo of Markdown files to store our documents. Why change?

Our wiki software reads and writes Markdown files from the filesystem. With 100+ pages on our wiki, we can still do near instantaneous full text search. Plus, changes to the content can continue to be tracked using Git and backed up automatically to Github. And there’s no database server to worry about. And if we ever want to migrate to another system, we’ve got all of our data in simple, human readable text files.

Text files rule!

What’s Next?

We think this simple, Slack-based approach to organizational knowledge capture and management makes a lot of sense. It works like magic for us, so it might work for other people too!

If you’d like to use a similar system for your team, sign up for Howdy, a powerful workplace bot for Slack that will help your team capture and use the information they create and share.

--

--

Editor for

I’m a designer and technologist in Austin, Texas. I co-founded XOXCO in 2008.