In this edition of the Projects We Love series, we feature Blockenberg, a headless CMS built on IPFS.

Why Build A Headless CMS?

Adam Sobotka and his ETHBrno hackathon teammates were building a completely decentralized website when they stumbled across a problem. They wanted to add a blog but realized that the only options were to use a centralized service or require users to write in Markdown or JSON files.

When using a centralized service, developers spend countless hours on formatting so that the content displays correctly on the site. Users are also subject to the decisions of the centralized service provider, which ultimately controls the user data.

Using Markdown or JSON files would require content creators to learn a new skill on top of the creative work they are already doing.

After watching a demo of Fission's ODD SDK (formerly known as Webnative), Adam realized he could create a user-friendly UI to publish articles to decentralized storage.

Adam knew that a headless CMS would help make rendering more efficient or keep it separate from the rest of the system so that one wasn't reliant on the other. It would be completely customizable from the client side, thus allowing for more flexibility to tailor the design while offering protection from censorship.

Using Blockenberg

The user experience is very similar to what we expect of a CMS. However, one point of differentiation is the login process. Blockenberg actually doesn't use passwords. Instead, it uses cryptographic keys and stores them on the user's machine according to the UCAN spec. Users can also delegate access to collaborators.

Once the user drafts a blog post and publishes it, the data is stored on IPFS and persisted by Fission's pinning service (this is the default, but users can always choose how they want to pin their data). IPFS storage is made possible by Fission's WNFS, which enables both public and private file storage. While the front end renders the blog post, the back end uses Fission's client library to fetch the data.

In order to display blog posts on Blockenberg, a client web app must be configured. It is up to the user how they would like to set this up, but Blockenberg offers both a Next.js option and an Astro option.

Next Steps

The plan is for Blockenberg to add more features to improve collaboration. For example, concurrent writing is an option, but there is a bit more work that needs to be completed before rolling this feature out.

Backward compatibility is another improvement Adam would like to make, as it would enable better filtering options in the future.

On a similar note, the ability to transfer data from another CMS to Blockenberg would be another handy feature to implement, as it would encourage more folks to move to a decentralized option that can grow with their needs (and not get tied down to a particular platform).

Getting Started

Blockenberg is a great tool for creating a personal website or blog, especially for those who value privacy, decentralization, and open and democratic information sharing.

If you'd like to learn more about integrating Blockenberg into your own site, visit the Blockenberg website and Twitter for more information on how to get started!