Capsule, The Developer’s Code Journal

I’m very pleased today to announce the release of Capsule, the developer’s code journal.


Capsule replaces the scratch document you have open when you’re coding. Instead of throwing away those notes, code snippets, API responses, ad-hoc todo lists, and outlines, Capsule creates an archive of your development artifacts.

Capsule is a free, Open Source (GPL) product. We chose to build it as a WordPress-based app. I’m on record saying that WordPress isn’t a great general purpose app platform but it’s ideal for journaling apps; and I’m very pleased we were able to use it for Capsule.


With Capsule you’re using a web app, not managing a traditional WordPress website. You never need to go into the WordPress admin to manage your content – the code editor loads right in the front-end and you create and edit posts inline.

Metadata is a love note to the future.

You designate projects and add tags via simple @project and #hashtag syntax directly in the content. No fiddly checkbox selection or choosing from dropdown menus. It’s the freedom and simplicity of a text file with the future benefits of metadata.


Read on for more about how Capsule works and the hows and whys of various features (and how you can use Capsule Server as a collaboration hub). More of a “try it for yourself” person? Jump over to the online demo and try it out. Or you can download it (or grab the code from GitHub) and set it up for yourself. We created Capsule as a WordPress theme – simply install it as usual and you’re set to go.

The idea for Capsule started about a year ago when my friend and Crowd Favorite alumni Gordon tweeted this out:

The idea of a code journal resonated with me immediately. I’ve been blogging for more than ten years here, and the act of journaling – of writing things down – definitely helps with introspection and to cement important lessons.

At Crowd Favorite we believe in the craftsman approach to web development. We believe in constantly learning and sharing knowledge. The idea of a code journal seemed like an obvious and useful tool.

Gordon talked about using text files, but I wasn’t sold on that implementation. I wanted a system that had the simplicity of using text files, but I also wanted to be able to add some structured data to make it easier to find my notes again later.

I like thinking about how systems and apps can work and fit together. The more I thought about the idea of a code journal, the more I realized that the information I would be recording about what I was building would be useful information to share with my colleagues. Likewise, what they recorded during their development would be interesting and useful for me and other team members. And it just so happens that my team and I are pretty handy with this little Open Source system that’s designed for journaling…

We brainstormed about how we’d want to use the system and firmed up a feature set. These included:

  • must be incredibly low friction (it will be competing with using text files)
  • no titles for entries (titles are friction)
  • a good code (text) editor (after all, this is a developer code journal)
  • ability to designate an entry as being part of a specific project
  • ability to add tags (keywords) to entries
  • ability to keep some entries private, but share appropriate entries with the rest of the team

As a daily user of Capsule, I’m proud to say we’ve accomplished this goal and I’m very pleased with the smoothness of the user experience.

While we are releasing version 1.0 today, we’ve had a functional version Capsule on our GitHub since early May of last year and I’ve been using it while we’ve been building it. As we’ve been implementing features, we’ve also tweaked the design and implementation based on our actual usage. It’s always handy to be your own use case.

Capsule Server: Use Capsule With Your Team

We’re actually releasing two products today, Capsule and Capsule Server. Capsule is the code journal that each developer can set up for themselves. Capsule Server is a collaboration hub that can accept Capsule entries and make them available to other team members.

I really like the way Capsule and Capsule Server interact. Developers can connect their Capsule install to as many Capsule Servers as they like. They can choose which entries get shared to which Capsule Servers, and which entries stay private – all of this with the same no-friction approach that makes it so easy to include useful metadata in Capsule entries.

When you set up a Capsule Server, you define the projects for that Server. When you connect to a Capsule Server, you can chose how to map your local projects to the Capsule Server’s projects. Any entries for projects that are mapped to a Capsule Server are replicated to that Capsule Server whenever they are saved.

Imagine that WordPress set up a Capsule Server for core development. Perhaps another for plugin development. I could connect to both of those, plus the Crowd Favorite Capsule Server. I would still be journaling in one place, with one tool, but I’d be sharing my notes with all the various folks I want to collaborate with.

I think Capsule an excellent solution to a problem many of us don’t even know we have. I hope that it will become a valuable tool for you and your development team.


This post is part of the project: Capsule. View the project timeline for more context on this post.