Note The Matrix Public Archive has been renamed to Matrix Viewer to better reflect what it actually does and doesn't do. It's a viewer for world-readable Matrix rooms and doesn't actually archive anything.
In the vein of feature parity with
Gitter, the goal is to make an
accessible public site for world_readable
Matrix rooms like Gitter's archives
which search engines can index and keep all of the content accessible/available.
Room directory homepage | Room view |
---|---|
The demo's refer to this project as the "Matrix Public Archive" which has now been renamed to "Matrix Viewer".
We server-side render (SSR) the Hydrogen
Matrix client on a Node.js server (since both use JavaScript) and serve pages on the fly
(with some Cloudflare caching on top) when someone requests
/r/matrixhq:matrix.org/${year}/${month}/${day}
. To fetch the events for a
given day/time, we use MSC3030's
/timestamp_to_event
endpoint to jump to a given day in the timeline and fetch the
messages from a Matrix homeserver.
Re-using Hydrogen gets us pretty and native(to Element) looking styles and keeps the maintenance burden of supporting more event types in Hydrogen.
See the FAQ page.
fetch
by default. And node-fetch
doesn't
support abortSignal.reason
yet.require('crypto').webcrypto.subtle
for Matrix encryption (olm) which can't be disabled in
Hydrogen yet. And
abortSignal.reason
was introduced in
v16.14.0 (although we use node-fetch
for now)./timestamp_to_event
endpoint
$ npm install
$ npm run build
# Edit `config/config.user-overrides.json` so that `matrixServerUrl` points to
# your homeserver and has `matrixAccessToken` defined
$ cp config/config.default.json config/config.user-overrides.json
$ npm run start
# Clone and install the `matrix-viewer` project
$ git clone git@github.com:matrix-org/matrix-viewer.git
$ cd matrix-viewer
$ npm install
# Edit `config/config.user-overrides.json` so that `matrixServerUrl` points to
# your homeserver and has `matrixAccessToken` defined
$ cp config/config.default.json config/config.user-overrides.json
# This will watch for changes, rebuild bundles and restart the server
$ npm run start-dev
If you want to make changes to the underlying Hydrogen SDK as well, you can locally link it into this project with the following instructions:
# We need to use a draft branch of Hydrogen to get the custom changes needed for
# `matrix-viewer` to run. Hopefully soon, we can get all of the custom
# changes mainlined so this isn't necessary.
$ git clone git@github.com:vector-im/hydrogen-web.git
$ cd hydrogen-web
$ git checkout madlittlemods/matrix-public-archive-scratch-changes
$ yarn install
$ yarn build:sdk
$ cd target/ && npm link && cd ..
$ cd ..
$ cd matrix-viewer
$ npm link hydrogen-view-sdk
See the testing documentation.
See the tracing documentation.