Sobre o projeto

O Element Call é um aplicativo de videoconferência construído sobre o protocolo Matrix, desenvolvido pela Element. É descrito como uma solução de videoconferência descentralizada e federada, usando MatrixRTC (MSC4143) com LiveKit como seu backend (MSC4195). Principais capacidades descritas no README: - Operação descentralizada e federada entre homeservers Matrix, sem autoridade central. - Chamadas com criptografia ponta a ponta. - Três modos de uso: aplicativo web autônomo, widget incorporado em clientes Matrix (Element Web, Element X no iOS e Android) e uma biblioteca experimental de componentes React para montagem dentro de um aplicativo hospedeiro. - Baseado em WebRTC, sem exigir software adicional dos participantes. - Escalabilidade via LiveKit SFU para reuniões maiores. - Recursos como levantar a mão e reações com emoji. Implantação e empacotamento: um pacote completo oferece suporte aos modos autônomo e widget como uma página web estática; um pacote incorporado é destinado ao modo widget empacotado com um aplicativo de mensagens; um pacote de componente (experimental) compila o Element Call como um componente React. A compilação do componente restringe seus estilos ao seu elemento raiz, oferece suporte a container queries para layout, inclui o inglês e carrega outros idiomas sob demanda, e aceita props de idioma e tema. Um host deve chamar initializeElementCall(config) antes de renderizar, e fornece um cliente Matrix, roomId, intent, config opcional e hostBridge; o host emite join, hangUp e setDeviceMute por meio de um ref handle. O pacote ainda não foi publicado e é instalado como dependência git. Auto-hospedagem: um guia de auto-hospedagem é referenciado. Cada implantação precisa de um transporte MatrixRTC na forma de um servidor LiveKit. A descoberta de transporte usa o endpoint GET /_matrix/client/unstable/org.matrix.msc4143/rtc/transports, retornando entradas rtc_transports do tipo livekit com um livekit_service_url apontando para um MatrixRTC Authorization Service. Seleção de backend: os participantes propõem transportes descobertos via org.matrix.msc4143.rtc_foci em seu evento de estado de membro de chamada; para LiveKit, o primeiro participante a entrar define o backend via foci_preferred; o serviço de autorização então fornece a URL WebSocket do LiveKit SFU e um JWT de acesso. Desenvolvimento: as dependências incluem Node.js, Corepack e Docker com Compose para o backend. A configuração do frontend usa corepack enable, pnpm install, uma configuração local copiada de config/config.devenv.json e pnpm dev. Um docker-compose-dev.yml inicia uma pilha local com homeservers Synapse, um serviço de autorização MatrixRTC, LiveKit SFU, uma autoridade de certificação localhost e um proxy reverso TLS; ele usa um segredo de teste e não deve ser exposto à internet pública. Os testes usam Vitest (com -u para atualizar snapshots) e Playwright, com um harness de componente na porta 3001. As traduções são gerenciadas via Localazy, e novas chaves de tradução são adicionadas executando pnpm i18n e editando locales/en/app.json. Licenciamento: licenciado duplamente pela New Vector Ltd (Element) sob AGPL-3.0 ou uma Element Commercial License paga.