{"id":20509027,"url":"https://github.com/abeluck/zom-web","last_synced_at":"2026-04-16T23:32:55.114Z","repository":{"id":146550708,"uuid":"170481283","full_name":"abeluck/zom-web","owner":"abeluck","description":"Zom Web","archived":false,"fork":false,"pushed_at":"2022-10-23T06:36:47.000Z","size":12150,"stargazers_count":0,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-05T22:26:17.511Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abeluck.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.rst","dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-02-13T09:41:12.000Z","updated_at":"2019-09-11T14:00:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"a53d88c9-caf6-411c-b190-6e81468ca149","html_url":"https://github.com/abeluck/zom-web","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/abeluck/zom-web","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeluck%2Fzom-web","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeluck%2Fzom-web/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeluck%2Fzom-web/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeluck%2Fzom-web/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abeluck","download_url":"https://codeload.github.com/abeluck/zom-web/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abeluck%2Fzom-web/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27530775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-12-05T02:00:07.920Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T20:21:53.441Z","updated_at":"2025-12-05T23:03:26.805Z","avatar_url":"https://github.com/abeluck.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"Riot\n====\n\nRiot (formerly known as Vector) is a Matrix web client built using the Matrix\nReact SDK (https://github.com/matrix-org/matrix-react-sdk).\n\nGetting Started\n===============\n\nThe easiest way to test Riot is to just use the hosted copy at\nhttps://riot.im/app.  The develop branch is continuously deployed by Jenkins at\nhttps://riot.im/develop for those who like living dangerously.\n\nTo host your own copy of Riot, the quickest bet is to use a pre-built\nreleased version of Riot:\n\n1. Download the latest version from https://github.com/vector-im/riot-web/releases\n1. Untar the tarball on your web server\n1. Move (or symlink) the riot-x.x.x directory to an appropriate name\n1. If desired, copy `config.sample.json` to `config.json` and edit it\n   as desired. See below for details.\n1. Enter the URL into your browser and log into Riot!\n\nReleases are signed by PGP, and can be checked against the public key\nat https://riot.im/packages/keys/riot.asc\n\nNote that Chrome does not allow microphone or webcam access for sites served\nover http (except localhost), so for working VoIP you will need to serve Riot\nover https.\n\n### Installation Steps for Debian Stretch\n1. Add the repository to your sources.list using either of the following two options:\n  - Directly to sources.list: `echo \"deb https://riot.im/packages/debian/ stretch main\" | sudo tee -a /etc/apt/sources.list`\n  - As a separate entry in sources.list.d: `echo \"deb https://riot.im/packages/debian/ stretch main\" | sudo tee /etc/apt/sources.list.d/riot.list`\n2. Add the gpg signing key for the riot repository: `curl -s https://riot.im/packages/debian/repo-key.asc | sudo apt-key add -`\n3. Update your package lists: `sudo apt-get update`\n4. Install Riot: `sudo apt-get install riot-web`\n\nImportant Security Note\n=======================\n\nWe do not recommend running Riot from the same domain name as your Matrix\nhomeserver.  The reason is the risk of XSS (cross-site-scripting)\nvulnerabilities that could occur if someone caused Riot to load and render\nmalicious user generated content from a Matrix API which then had trusted\naccess to Riot (or other apps) due to sharing the same domain.\n\nWe have put some coarse mitigations into place to try to protect against this\nsituation, but it's still not good practice to do it in the first place.  See\nhttps://github.com/vector-im/riot-web/issues/1977 for more details.\n\nThe same applies for end-to-end encrypted content, but since this is decrypted\non the client, Riot needs a way to supply the decrypted content from a separate\norigin to the one Riot is hosted on. This currently done with a 'cross origin\nrenderer' which is a small piece of javascript hosted on a different domain.\nTo avoid all Riot installs needing one of these to be set up, riot.im hosts\none on usercontent.riot.im which is used by default. See 'config.json' if you'd\nlike to host your own. https://github.com/vector-im/riot-web/issues/6173 tracks\nprogress on replacing this with something better.\n\nBuilding From Source\n====================\n\nRiot is a modular webapp built with modern ES6 and requires a npm build system\nto build.\n\n1. Install or update `node.js` so that your `node` is at least v8.12.0 (and `npm`\n   is at least v5.x).\n1. Clone the repo: `git clone https://github.com/vector-im/riot-web.git`.\n1. Switch to the riot-web directory: `cd riot-web`.\n1. If you're using the `develop` branch then it is recommended to set up a proper\n   development environment (\"Setting up a dev environment\" below) however one can\n   install the develop versions of the dependencies instead:\n   ```\n   scripts/fetch-develop.deps.sh\n   ```\n   Whenever you git pull on riot-web you will also probably need to force an update\n   to these dependencies - the simplest way is to re-run the script, but you can also\n   manually update and rebuild them:\n   ```\n   cd matrix-js-sdk\n   git pull\n   npm install # re-run to pull in any new dependencies\n   # Depending on your version of npm, npm run build may happen as part of\n   # the npm install above (https://docs.npmjs.com/misc/scripts#prepublish-and-prepare)\n   # If in doubt, run it anyway:\n   npm run build\n   cd ../matrix-react-sdk\n   git pull\n   npm install\n   npm run build\n   ```\n   Or just use https://riot.im/develop - the continuous integration release of the\n   develop branch. (Note that we don't reference the develop versions in git directly\n   due to https://github.com/npm/npm/issues/3055.)\n1. Install the prerequisites: `npm install`.\n1. Configure the app by copying `config.sample.json` to `config.json` and\n   modifying it (see below for details).\n1. `npm run dist` to build a tarball to deploy. Untaring this file will give\n   a version-specific directory containing all the files that need to go on your\n   web server.\n\nNote that `npm run dist` is not supported on Windows, so Windows users can run `npm\nrun build`, which will build all the necessary files into the `webapp`\ndirectory. The version of Riot will not appear in Settings without\nusing the dist script. You can then mount the `webapp` directory on your\nwebserver to actually serve up the app, which is entirely static content.\n\nconfig.json\n===========\n\nYou can configure the app by copying `config.sample.json` to\n`config.json` and customising it:\n\nFor a good example, see https://riot.im/develop/config.json\n\n1. `default_hs_url` is the default homeserver url.\n1. `default_is_url` is the default identity server url (this is the server used\n   for verifying third party identifiers like email addresses). If this is blank,\n   registering with an email address, adding an email address to your account,\n   or inviting users via email address will not work.  Matrix identity servers are\n   very simple web services which map third party identifiers (currently only email\n   addresses) to matrix IDs: see http://matrix.org/docs/spec/identity_service/unstable.html\n   for more details.  Currently the only public matrix identity servers are https://matrix.org\n   and https://vector.im.  In future identity servers will be decentralised.\n1. `features`: Lookup of optional features that may be `enable`d, `disable`d, or exposed to the user\n   in the `labs` section of settings.  The available optional experimental features vary from\n   release to release.\n1. `brand`: String to pass to your homeserver when configuring email notifications, to let the\n   homeserver know what email template to use when talking to you.\n1. `integrations_ui_url`: URL to the web interface for the integrations server. The integrations\n   server is not Riot and normally not your Home Server either. The integration server settings\n   may be left blank to disable integrations.\n1. `integrations_rest_url`: URL to the REST interface for the integrations server.\n1. `integrations_widgets_urls`: list of URLs to the REST interface for the widget integrations server.\n1. `bug_report_endpoint_url`: endpoint to send bug reports to (must be running a\n   https://github.com/matrix-org/rageshake server). Bug reports are sent when a user clicks\n   \"Send Logs\" within the application. Bug reports can be disabled by leaving the\n   `bug_report_endpoint_url` out of your config file.\n1. `roomDirectory`: config for the public room directory. This section is optional.\n1. `roomDirectory.servers`: List of other homeservers' directories to include in the drop\n   down list. Optional.\n1. `default_theme`: name of theme to use by default (e.g. 'light')\n1. `update_base_url` (electron app only): HTTPS URL to a web server to download\n   updates from. This should be the path to the directory containing `macos`\n   and `win32` (for update packages, not installer packages).\n1. `cross_origin_renderer_url`: URL to a static HTML page hosting code to help display\n   encrypted file attachments. This MUST be hosted on a completely separate domain to\n   anything else since it is used to isolate the privileges of file attachments to this\n   domain. Default: `https://usercontent.riot.im/v1.html`. This needs to contain v1.html from\n   https://github.com/matrix-org/usercontent/blob/master/v1.html\n1. `piwik`: Analytics can be disabled by setting `piwik: false` or by leaving the piwik config\n   option out of your config file. If you want to enable analytics, set `piwik` to be an object\n   containing the following properties:\n    1. `url`: The URL of the Piwik instance to use for collecting analytics\n    1. `whitelistedHSUrls`: a list of HS URLs to not redact from the analytics\n    1. `whitelistedISUrls`: a list of IS URLs to not redact from the analytics\n    1. `siteId`: The Piwik Site ID to use when sending analytics to the Piwik server configured above\n1. `teamServerConfig`, `teamTokenMap`, `referralBaseUrl`: an obsolete precursor to communities\n   with referral tracking; please ignore it.\n1. `welcomeUserId`: the user ID of a bot to invite whenever users register that can give them a tour\n\n\nNote that `index.html` also has an og:image meta tag that is set to an image\nhosted on riot.im. This is the image used if links to your copy of Riot\nappear in some websites like Facebook, and indeed Riot itself. This has to be\nstatic in the HTML and an absolute URL (and HTTP rather than HTTPS), so it's\nnot possible for this to be an option in config.json. If you'd like to change\nit, you can build Riot as above, but run\n`RIOT_OG_IMAGE_URL=\"http://example.com/logo.png\" npm run build`.\nAlternatively, you can edit the `og:image` meta tag in `index.html` directly\neach time you download a new version of Riot.\n\nRunning as a Desktop app\n========================\n\nRiot can also be run as a desktop app, wrapped in electron. You can download a\npre-built version from https://riot.im/desktop.html or, if you prefer,\nbuild it yourself. Requires Electron \u003e=1.6.0\n\nTo run as a desktop app:\n\n1. Follow the instructions in 'Building From Source' above, but run\n   `npm run build` instead of `npm run dist` (since we don't need the tarball).\n2. Install electron and run it:\n\n   ```\n   npm install electron\n   npm run electron\n   ```\n\nTo build packages, use electron-builder. This is configured to output:\n * dmg + zip for macOS\n * exe + nupkg for Windows\n * deb for Linux\nBut this can be customised by editing the `build` section of package.json\nas per https://github.com/electron-userland/electron-builder/wiki/Options\n\nSee https://github.com/electron-userland/electron-builder/wiki/Multi-Platform-Build\nfor dependencies required for building packages for various platforms.\n\nThe only platform that can build packages for all three platforms is macOS:\n```\nbrew install wine --without-x11\nbrew install mono\nbrew install gnu-tar\nnpm install\nnpm run build:electron\n```\n\nFor other packages, use electron-builder manually. For example, to build a package\nfor 64 bit Linux:\n\n 1. Follow the instructions in 'Building From Source' above\n 2. `node_modules/.bin/build -l --x64`\n\nAll electron packages go into `electron/dist/`\n\nMany thanks to @aviraldg for the initial work on the electron integration.\n\nOther options for running as a desktop app:\n * https://github.com/krisak/vector-electron-desktop\n * @asdf:matrix.org points out that you can use nativefier and it just works(tm)\n\n```\nsudo npm install nativefier -g\nnativefier https://riot.im/app/\n```\n\nDevelopment\n===========\n\nBefore attempting to develop on Riot you **must** read the developer guide\nfor `matrix-react-sdk` at https://github.com/matrix-org/matrix-react-sdk, which\nalso defines the design, architecture and style for Riot too.\n\nYou should also familiarise yourself with the \"Here be Dragons\" guide to the\ntame \u0026 not-so-tame dragons (gotchas) which exist in the codebase:\nhttps://docs.google.com/document/d/12jYzvkidrp1h7liEuLIe6BMdU0NUjndUYI971O06ooM\n\nThe idea of Riot is to be a relatively lightweight \"skin\" of customisations on\ntop of the underlying `matrix-react-sdk`. `matrix-react-sdk` provides both the\nhigher and lower level React components useful for building Matrix communication\napps using React.\n\nAfter creating a new component you must run `npm run reskindex` to regenerate\nthe `component-index.js` for the app (used in future for skinning).\n\nPlease note that Riot is intended to run correctly without access to the public\ninternet.  So please don't depend on resources (JS libs, CSS, images, fonts)\nhosted by external CDNs or servers but instead please package all dependencies\ninto Riot itself.\n\nSetting up a dev environment\n============================\n\nMuch of the functionality in Riot is actually in the `matrix-react-sdk` and\n`matrix-js-sdk` modules. It is possible to set these up in a way that makes it\neasy to track the `develop` branches in git and to make local changes without\nhaving to manually rebuild each time.\n\nFirst clone and build `matrix-js-sdk`:\n\n1. `git clone https://github.com/matrix-org/matrix-js-sdk.git`\n1. `pushd matrix-js-sdk`\n1. `git checkout develop`\n1. `npm install`\n1. `npm install source-map-loader`  # because webpack is made of fail (https://github.com/webpack/webpack/issues/1472)\n1. `popd`\n\nThen similarly with `matrix-react-sdk`:\n\n1. `git clone https://github.com/matrix-org/matrix-react-sdk.git`\n1. `pushd matrix-react-sdk`\n1. `git checkout develop`\n1. `npm link ../matrix-js-sdk`\n1. `popd`\n\nFinally, build and start Riot itself:\n\n1. `git clone https://github.com/vector-im/riot-web.git`\n1. `cd riot-web`\n1. `git checkout develop`\n1. `npm install`\n1. `npm link ../matrix-js-sdk`\n1. `npm link ../matrix-react-sdk`\n1. `npm start`\n1. Wait a few seconds for the initial build to finish; you should see something like:\n    ```\n    Hash: b0af76309dd56d7275c8\n    Version: webpack 1.12.14\n    Time: 14533ms\n             Asset     Size  Chunks             Chunk Names\n         bundle.js   4.2 MB       0  [emitted]  main\n        bundle.css  91.5 kB       0  [emitted]  main\n     bundle.js.map  5.29 MB       0  [emitted]  main\n    bundle.css.map   116 kB       0  [emitted]  main\n        + 1013 hidden modules\n    ```\n   Remember, the command will not terminate since it runs the web server\n   and rebuilds source files when they change. This development server also\n   disables caching, so do NOT use it in production.\n1. Open http://127.0.0.1:8080/ in your browser to see your newly built Riot.\n\nWhen you make changes to `matrix-react-sdk` or `matrix-js-sdk` they should be\nautomatically picked up by webpack and built.\n\nIf you add or remove any components from the Riot skin, you will need to rebuild\nthe skin's index by running, `npm run reskindex`.\n\nIf any of these steps error with, `file table overflow`, you are probably on a mac\nwhich has a very low limit on max open files. Run `ulimit -Sn 1024` and try again.\nYou'll need to do this in each new terminal you open before building Riot.\n\nRunning the tests\n-----------------\n\nThere are a number of application-level tests in the `tests` directory; these\nare designed to run in a browser instance under the control of\n[karma](https://karma-runner.github.io). To run them:\n\n* Make sure you have Chrome installed (a recent version, like 59)\n* Make sure you have `matrix-js-sdk` and `matrix-react-sdk` installed and\n  built, as above\n* `npm run test`\n\nThe above will run the tests under Chrome in a `headless` mode.\n\nYou can also tell karma to run the tests in a loop (every time the source\nchanges), in an instance of Chrome on your desktop, with `npm run\ntest-multi`. This also gives you the option of running the tests in 'debug'\nmode, which is useful for stepping through the tests in the developer tools.\n\nTranslations\n============\n\nTo add a new translation, head to the [translating doc](docs/translating.md).\n\nFor a developer guide, see the [translating dev doc](docs/translating-dev.md).\n\n[\u003cimg src=\"https://translate.riot.im/widgets/riot-web/-/multi-auto.svg\" alt=\"translationsstatus\" width=\"340\"\u003e](https://translate.riot.im/engage/riot-web/?utm_source=widget)\n\nTriaging issues\n===============\n\nIssues will be triaged by the core team using the below set of tags.\n\nTags are meant to be used in combination - e.g.:\n * P1 critical bug == really urgent stuff that should be next in the bugfixing todo list\n * \"release blocker\" == stuff which is blocking us from cutting the next release.\n * P1 feature type:voip == what VoIP features should we be working on next?\n\npriority: **compulsory**\n\n* P1: top priority - i.e. pool of stuff which we should be working on next\n* P2: still need to fix, but lower than P1\n* P3: non-urgent\n* P4: interesting idea - bluesky some day\n* P5: recorded for posterity/to avoid duplicates. No intention to resolves right now.\n\nbug or feature: **compulsory**\n\n* bug\n* feature\n\nbug severity: **compulsory, if bug**\n\n* critical - whole app doesn't work\n* major - entire feature doesn't work\n* minor - partially broken feature (but still usable)\n* cosmetic - feature works functionally but UI/UX is broken\n\ntypes\n* type:* - refers to a particular part of the app; used to filter bugs\n  on a given topic - e.g. VOIP, signup, timeline, etc.\n\nadditional categories (self-explanatory):\n\n* release blocker\n* ui/ux (think of this as cosmetic)\n* network (specific to network conditions)\n* platform specific\n* accessibility\n* maintenance\n* performance\n* i18n\n* blocked - whether this issue currently can't be progressed due to outside factors\n\ncommunity engagement\n* easy\n* hacktoberfest\n* bounty? - proposal to be included in a bounty programme\n* bounty - included in Status Open Bounty\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeluck%2Fzom-web","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabeluck%2Fzom-web","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabeluck%2Fzom-web/lists"}