A distributed, Git-integrated content management system

I needed a CMS that allowed me to work offline, because I didn't want productivity dependent on an internet connection. I also wanted something that felt lightweight, produced content that could be deployed anywhere, but still had some of the niceties of traditional content management systems. Most importantly, I wanted everything to be undoable —disaster recovery needed to be built-in.

I couldn't find a CMS that provided all of the above. So I decided to build one. It's called Gin.


If you've ever lost data, whether due to a technical failure or human error, you know how painful it can be. I suffered an almost catastrophic loss myself, due to my own mistake (read: complacency).

Gin is designed to protect everything, from code to content. How? By bringing to content creation something that has been part of the development process for years: version control.

Gin is built on the most used and most loved version control system there is: Git. Not only that, but the content is stored securely on the most popular platform for hosting Git repositories: GitHub.

Because true version control is baked right in, all changes in Gin can be undone. Any mistake can be rectified, whether it's a configuration or content error. Your entire project is under version control from the point of creation. Even deletions are recoverable. No more loss. Just press rewind.

Work offline

There are only a few actions in Gin that require an internet connection: login, project creation and synchronisation. All other operations work offline. You can even preview your content as it will appear once it's published. Yes. You can preview it. Offline.


Gin uses GitHub for authentication. If you have a GitHub account, you're already all set to start using Gin. You'll only need to login once. This will allow Gin to perform actions on your behalf on the repository it creates for you (and any other Gin projects on which you collaborate).


As mentioned above, when a project is created in Gin, it automatically creates a repository on GitHub. Whenever you save changes while using Gin on your computer, they're actually being saved to your local copy of the Git repository. In order to fully protect your content, you have to push your local changes back to the remote GitHub repository.


Create, edit and delete to your heart's content. You'll be able to rewind any change you've made locally. Then, whenever you're ready to push your changes to the cloud, just hit Sync. Anyone who is collaborating with you on your project will receive the changes when they too sync. They'll also gain the ability to rewind any of your changes.

Reduced load time

Whenever content is published, Gin prerenders it as HTML. This means the finished product can be deployed anywhere: any server of your choosing, Amazon S3, GitHub pages. The content is static, so minimal resources are required to host it. Naturally, this also helps to reduce load times. Compare this with content managment systems that, by default, re-render pages on every request.

Proof of concept

Gin is in the early stages of development; I often refer to it as a prototype or proof of concept. However, none of the above is just conceptual. It's all operational and already in use right here. The earlier content of this site (which used to be Death by Wordpress) was ported from Ghost to Gin to live on as part of Prickly Dev. But the most recent posts—including this one—were created and published using Gin.

If you like the idea, want to know more, or are interested in getting involved, get in touch via @LatnBlack.

More about posts about Gin: