Stack e build
Resumo em uma frase: Electron + React + TypeScript + Tailwind CSS, com o instalador Windows compilado automaticamente via GitHub Actions.
Testado só no Windows. É o único sistema onde o app foi usado de verdade até agora. Existe um alvo de build pra Linux (
AppImage), mas essa build ainda não foi revisada num desktop Linux real.
Com o que o programa é feito
- Electron: o programa roda como um aplicativo de desktop nativo, não como um site.
- React + TypeScript: toda a interface e a lógica da aplicação, com tipagem estrita em todo o projeto (processo principal, ponte de comunicação e interface).
- Tailwind CSS: estilo visual, usando apenas tokens de design configurados, sem valores soltos espalhados pelo código.
- Vite (via electron-vite): empacotamento do código.
- PeerJS sobre WebRTC: sinalização e conexão direta de vídeo, áudio e voz.
- Zod: validação de formulários e de todas as mensagens trocadas entre participantes.
- electron-updater: atualização automática via GitHub Releases, com verificação periódica em segundo plano.
Como o instalador é gerado
O instalador para Windows (formato NSIS) nunca é compilado localmente pelo autor. Isso é feito automaticamente, do zero, por um workflow do GitHub Actions rodando numa máquina Windows real e gratuita, disparado a cada nova tag de versão (vX.Y.Z) publicada no repositório. O fluxo completo, do código-fonte até o .exe publicado nas Releases, é público e pode ser conferido no arquivo .github/workflows/release.yml do repositório.
Testes
Existe uma suíte de testes end-to-end versionada no repositório (pasta e2e/), rodada com npm run test:e2e: builda o app e usa o Playwright contra o binário real do Electron, abrindo múltiplas instâncias e simulando pessoas de verdade se conectando entre si. Cobre criar/entrar em sala, compartilhar tela (incluindo editar resolução/fonte com o compartilhamento já em andamento), assistir, falar por voz e a tela de Configurações/Logs. Um workflow de CI (.github/workflows/ci.yml) roda essa suíte, junto com checagem de tipos e build, a cada push na main e a cada pull request.
Todo o código é público
Não existe nenhum binário fechado, nenhuma dependência proprietária escondida, nenhuma parte do programa que não esteja neste mesmo repositório. Qualquer pessoa pode clonar, ler linha por linha e compilar a própria versão a partir do zero.