diff --git a/README.md b/README.md index 076cb2c..1445381 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,58 @@ # Element Call -Showcase for full mesh video chat powered by Matrix, implementing [MSC3401](https://github.com/matrix-org/matrix-spec-proposals/blob/matthew/group-voip/proposals/3401-group-voip.md). +[![Chat](https://img.shields.io/matrix/webrtc:matrix.org)](https://matrix.to/#/#webrtc:matrix.org) +[![Translate](https://translate.element.io/widgets/element-call/-/element-call/svg-badge.svg)](https://translate.element.io/engage/element-call/) -Discussion in [#webrtc:matrix.org: ![#webrtc:matrix.org](https://img.shields.io/matrix/webrtc:matrix.org)](https://matrix.to/#/#webrtc:matrix.org) +Full mesh group calls powered by [Matrix](https://matrix.org), implementing [MatrixRTC](https://github.com/matrix-org/matrix-spec-proposals/blob/matthew/group-voip/proposals/3401-group-voip.md). -## Getting Started +To try it out, visit our hosted version at [call.element.io](https://call.element.io). You can also find the latest development version continuously deployed to [element-call.netlify.app](https://element-call.netlify.app). -`element-call` is built against the `robertlong/group-call` branch of [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk/pull/1902). Because of how this package is configured and Vite's requirements, you will need to clone it locally and use `yarn link` to stich things together. +## Host it yourself -First clone, install, and link `matrix-js-sdk` +Until prebuilt tarballs are available, you'll need to build Element Call from source. First, clone and install the package: + +``` +git clone https://github.com/vector-im/element-call.git +cd element-call +yarn +cp .env.example .env +``` + +You can now edit the configuration in `.env` to your liking. The most important thing is to set `VITE_DEFAULT_HOMESERVER` to the homeserver that the app should use, such as `https://call.ems.host`. + +Next, build the project: + +``` +yarn build +``` + +If all went well, you can now find the build output under `dist` as a series of static files. These can be hosted using any web server of your choice. + +Because Element Call uses client-side routing, your server must be able to route any requests to non-existing paths back to `/index.html`. For example, in Nginx you can achieve this with the `try_files` directive: + +``` +server { + ... + location / { + ... + try_files $uri /$uri /index.html; + } +} +``` + +## Development + +Element Call is built against the `robertlong/group-call` branch of [matrix-js-sdk](https://github.com/matrix-org/matrix-js-sdk/pull/2553). To get started, clone, install, and link the package: ``` git clone https://github.com/matrix-org/matrix-js-sdk.git cd matrix-js-sdk -git checkout robertlong/group-call +git switch robertlong/group-call yarn yarn link ``` -Next you'll also need [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html) installed locally and running on port 8008. - -Finally we can set up this project. +Next, we can set up this project: ``` git clone https://github.com/vector-im/element-call.git @@ -28,6 +60,13 @@ cd element-call yarn yarn link matrix-js-sdk cp .env.example .env +``` + +By default, the app expects you to have [Synapse](https://matrix-org.github.io/synapse/latest/setup/installation.html) installed locally and running on port 8008. If you wish to use another homeserver, you can set it in your `.env` file. + +You're now ready to launch the development server: + +``` yarn dev ``` @@ -35,20 +74,6 @@ yarn dev Configuration options are documented in the `.env` file. -## License +## Translation -All files in this project are: - -Copyright 2021-2022 New Vector Ltd - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. +If you'd like to help translate Element Call, head over to [translate.element.io](https://translate.element.io/engage/element-call/). You're also encouraged to join the [Element Translators](https://matrix.to/#/#translators:element.io) space to discuss and coordinate translation efforts.