A web client for writing news stories, personal blogs and more, built on the Matrix protocol - https://matrix.org.
Note: journal is undergoing a big redesign, moving from Riot.js to React and changing architecture.
journal 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. journal is an attempt to use Matrix for viewing, creating and publishing journalistic writing and blogs.
But what is journal?
The demo shows one example of journal 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 journal 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 journal. There are other Matrix clients of course, but none that use the same meta-data as journal (yet).
journal can be used to create a personal blog website. The blog creator need only find a hosted instance of journal (like the one on journal.ldbco.de) to be able to publish material. Alternatively, if the creator is willing, they may want to run their own journal allowing personal touches like modification to the look-and-feel of the website.
journal can be used to create an entire website dedicated to viewing, creating and publishing journalistic writing and blogs! In truth, even if journal 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.
journal runs on node.js version 6.2.2+
The code below builds an instance of journal in the web directory.
git clone firstname.lastname@example.org:lukebarnard1/journal.git cd journal npm install # build matrix-js-sdk cd node_modules/matrix-js-sdk npm run build cd .. # build journal npm run build
To host an instance, the
dev script can be used to run journal on port 4000 (port specified in index.js).
npm run-script dev
This will build journal 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, journal is simply a collection of files to be served over HTTP.
To modify the style of the app, the CSS in style.css can be changed.
journal needs some love!
If you find an issue through using journal, 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 journal. 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.