Adding user-generated content to a static site using Staticman

I've been really interested in finding the ideal solution to add user-generated content, such as comments on a blog post, to a static site. My incursion started with a PHP middleman application that would interact with the now defunct Poole platform.

A few months later, a talk by Tom Preston-Werner made me rethink the whole concept, and I ended up building a bespoke commenting system. After several iterations, that project eventually evolved into a public, open-source platform called Staticman.

In a nutshell, I love the fact that my entire site lives in a GitHub repository and can go into a ZIP file with just a click, content included. I wanted to allow users to comment on my posts, but refused to accept the fact that introducing user-generated content would mean breaking that premise above.

Commenting platforms like Disqus are great, but the content is no longer under your control, not to mention the fact that it's difficult to fully customise visually so it blends in with your existing design.

With Staticman, you can have user comments stored as data files in the repository, along with the rest of your content. When users submit a new entry, Staticman will process, validate and push it to your GitHub repository, either directly to the branch where your site lives or as a pull request for your approval.

Instead of writing an essay, I figured the video below would be a good way of showing the process of integrating the platform with a Jekyll site. It's called Popcorn and it's running on GitHub Pages.

The example shows how to use the hosted version available on, but you can choose to run your own instance as the entire project is fully open source and available on GitHub.

If you need help or get stuck, feel free to drop any questions in the comments box below — which is powered by Staticman, of course! ∎