DEV Community

Luke Barnard
Luke Barnard

Posted on • Updated on

Introduction // Building a Decentralised Blog

Before starting my new job at Tessian (for which I am very excited), I want to focus on some projects that I've been working on in my free time. I'll be using to document these endeavours, partly to keep myself sane and partly to get the word out for all the cool stuff I'm making.

One of these projects is called journal. It's a self-hosted blog application backed by the Matrix protocol, an open, decentralised, federated messaging system. The idea is that all of the data required to display, discuss and share the blog are stored in a Matrix room. Matrix rooms are federated across the Matrix servers of users participating (writing blogs, commenting) and Matrix has APIs for streaming events to web clients. As such, journal benefits from having a decentralised backend with streamed updates.

I'm currently designing the specifics of how this would work with respect to my chosen requirements. The POC (see the GitHub repository prior to any releases) showed how journal would work in principle and gained a fair amount of interest in the Matrix community. The new design hopes to fix the main problems of the POC and produce something that can be easily run in production with little setup.

One key requirement missing from the POC was simple sharing of blog articles. Conceptually simple, sharing a URL to a blog post is a standard way to get exposure to multiple audiences on the web, but the POC lacked a way to link to specific articles.

Another unmet requirement was rendering articles as quickly as a static webpage. At its inception, journal was designed to be a web client that did all networking via Matrix. This, however, does not afford server-side rendering which is necessary for showing articles quickly and showing previews of content on social networking sites and other link-sharing mediums.

I have some interesting thoughts on these, which hopefully will follow in subsequent blogs. Yesterday evening was spent diving head-first into Next.js as a potential solution to the above, but I'll hold off on posting the new architecture of journal until I've checked it for sanity.

If you have any comments or queries, feel free to comment.

Follow me for more updates 🚀

Next chapter:

Top comments (1)

cotcotcoder profile image

Hey Luke, journal seems to be a very interesting project. I discovered Matrix at FOSDEM this year but I hardly distinct it from ActivityPub. Don't hesitate to share your knowledge about decentralization :)