Using Keystatic as a CMS

Most of the text you read on this website was written using Keystatic — a new tool developed by Thinkmill to manage website content. It supports human-readable Markdown (technically Markdoc), JSON, and YAML output formats.

For years now, I've had a personal website because:

  1. I'm a web developer, and every framework out there has a tutorial on how to use said framework to set up a blog.
  2. I have a domain that I use for email, so I might as well use it for something!

I've always been jealous of people who are able to maintain a blog. I'm not one of those people (but I would like to be!). I'm hoping Keystatic will remove some of the friction I've experienced in the past, so that I'm more likely to write. Only time will tell.

Over the years, I've experimented with numerous CMSs, including WordPress, SiteLeaf, Forestry, Sanity, Netlify CMS, Prismic, Contentful, and probably several others that I can't recall right now. Truth be told, I didn't really like any of them. I may be biased (since I work at Thinkmill, though I haven't directly contributed to Keystatic beyond beta testing), but I genuinely believe Keystatic has the most potential to make blogging stick for developers like myself.

Having no database is very appealing to me. In the past, I've tried setting up a blog that reads Markdown files directly from the file system, but I never stuck with it. There was just too much friction to get started (and I'm lazy when it comes to writing). Having my content integrated within the codebase makes anything I write far more portable, and using a human-readable format like Markdoc gives me plenty of options when it comes to editing it (though I usually prefer using Keystatic). By keeping my content in code rather than a database, I never have to worry about database migrations or encountering broken deploy previews because the database and the website are out of sync.

While Keystatic isn't the first CMS to offer a WYSIWYG editor for markdown files, in my opinion, it's the first to really nail the execution. Defining the schema is straightforward (and surprisingly powerful), and the editing experience is very nice (and getting better all the time).

I'm keenly watching the development of Keystatic. It's early days, and there are still a few rough edges here and there, but overall it's been a joy to work with. Now, if only there was a nice way to manage assets like images that are a little out of place in source control... 🤔