a blogging platform built on [matrix]
JavaScript CSS HTML
Latest commit 7ad66a8 Jan 10, 2017 @lukebarnard1 Major improvements through small changes
 - Creating new blog redirects user to it
 - Creating new post hides input box and local echos appear correctly
 - Scrollback actually works!!

A lot of this was achieved by using the existing underlying timeline property of the room. In hind-sight, trying to recreate that was a mistake, but you live and learn.
Other bugs were due to done!=then confusion.


j - journalism for [matrix]

A web client for writing news stories, personal blogs and more, built on Matrix.



j is a website that can be used to display content stored on Matrix servers. Matrix is a distributed messaging protocol that allows messages to be sent to others across a network of homeservers across the globe. The distributed nature of Matrix makes it ideal for hosting published content, with no central server that could fail. j is an attempt to use Matrix for viewing, creating and publishing journalistic writing and blogs.

But what is j?

The demo shows one example of j running in the wild. With this website users can read blogs that are already public on Matrix and interact with other subscribers and the authors using the comment functionality and create their own blogs. To access the Matrix network, users can login to the matrix.org homeserver with their Matrix user/password combination or login as a guest. Users can also specify their own homeserver to use as an entry point into the network. The login is necessary as part of the Matrix protocol to authenticate and identify users within the system.

It may also be argued that j is an extension/adaptation of the Matrix protocol. It uses the flexibility of the Matrix protocol to embed published materials and comments with meta-data that serve to enhance the functionality of j. There are other Matrix clients of course, but none that use the same meta-data as j (yet).

Use Cases

Personal Blog

j can be used to create a personal blog website. The blog creator need only find a hosted instance of j (like the one on ldbco.de) to be able to publish material. Alternatively, if the creator is willing, they may want to run their own j allowing personal touches like modification to the look-and-feel of the website.

Blog/News Site

j can be used to create an entire website dedicated to viewing, creating and publishing journalistic writing and blogs! In truth, even if j is used as a personal blog site, users are still able to create their own blogs through the same interface. So really, even the personal blogs are entire blog websites.


Quick Start

j runs on node.js version 6.2.2+

The code below builds an instance of j in the web directory.

git clone git@github.com:lukebarnard1/j.git
cd j
npm install
npm run-script build

To host an instance, the dev script can be used to run j on port 4000 (port specified in index.js).

npm run-script dev

This will build j using browserify and will watch for changes to the source in order to trigger builds when changes occur. Express is used to serve files in the web directory at http://localhost:4000.


The dev script is enough to deploy, and requires node with Express installed. Otherwise, any other web server is perfectly fine -- when built, j is simply a collection of files to be served over HTTP.

Style Modifications

Overriding CSS can be placed in the CSS style sheet located in custom.css. To include it in the running version of j, uncomment the relevant line in the <head> tag of index.html. Alternatively, the main style sheet style.css can be edited.


j needs some love!

Reporting Issues

If you find an issue through using j, please report it on Github, making sure you follow the guidelines:

  • The title should summarise the issue entirely and succinctly: not too short and not too long.
  • For bugs, there must be a full set of steps (no matter how few/simple) required to reproduce it, and logs/stack traces are always appreciated.
  • For feature requests, the description should be as detailed as possible with, if possible, discussion of a possible implementation.

Submitting PRs

Please feel free to submit patches for any of the issues with j. Follow these guidelines when you do submit patches:

  • Keep them focussed. This should help to speed up the code review process.
  • If a PR is in response to an existing issue, reference the issue number (e.g. #5).
  • If the issue being fixed is not reported yet, explain it in the PR and follow 2. of the Reporting Issues section.