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).
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.
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.
j runs on node.js version 6.2.2+
The code below builds an instance of j in the web directory.
git clone email@example.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
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.
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!
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.
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.