Texto em tempo real
Canais de texto com histórico, anexos, edição e exclusão de mensagens, e indicador de não lidas em todos os servidores ao mesmo tempo.
Em testes · acesso por convite
O FFCom organiza a conversa do jeito que você já conhece: servidores, categorias e canais de texto, voz e fórum. A diferença está em quem guarda tudo isso, porque cada servidor roda na máquina de quem cria a comunidade, e nenhuma empresa pode desligar, vender ou mudar as regras dele por você.
Tudo abaixo já está implementado e no ar na instância de testes.
Canais de texto com histórico, anexos, edição e exclusão de mensagens, e indicador de não lidas em todos os servidores ao mesmo tempo.
Canais de voz com câmera, compartilhamento de tela, push-to-talk e atalho para mutar, rodando num LiveKit que fica no seu próprio servidor.
Para o que não pode se perder no meio do chat: tópicos com respostas, organizados como qualquer outro canal.
Cargos com permissões por servidor e ajustes por canal, além de convites, expulsão e banimento de membros.
Lista de amigos com presença, e mensagens diretas cifradas de ponta a ponta: nem o servidor que entrega a mensagem consegue lê-la.
Funciona no navegador e pode ser instalado como aplicativo (PWA). A versão desktop em Electron está em preparação.
São três peças, e só uma delas é central, a que guarda a sua conta.
server-central · uma instância oficial
Login, perfil, amigos, mensagens diretas cifradas e a lista dos servidores em que você entrou. Não guarda as conversas dos servidores.
client · web e desktop
Um só aplicativo conversa com quantos servidores você quiser, cada um no endereço de quem o hospeda.
server-channel
server-channel
server-channel
Cada server-channel guarda os próprios canais, mensagens, arquivos e chamadas de voz. Se um deles sair do ar, os outros seguem funcionando, e ninguém de fora decide quem entra: só se chega a um servidor por convite ou pelo endereço dele.
Um servidor FFCom é um diretório com um docker-compose.yml e um arquivo .env. Ele sobe o serviço, o banco Postgres, o LiveKit para voz e vídeo e um servidor TURN para atravessar NAT, sem compilar nada na sua máquina.
Depois de instalado, o servidor se atualiza sozinho: ele consulta um índice de versões assinado, confere a assinatura e o hash de cada binário e volta para a versão anterior se a nova não subir.
Hoje a imagem é publicada para linux/amd64. Na frente do servidor vai um proxy reverso com HTTPS; o guia recomenda o Caddy, que emite o certificado sozinho.
# no diretório server-channel do repositório
$ cp .env.example .env
$ nano .env # senhas, chaves do LiveKit, IP público
$ docker compose up -d
[+] Running 4/4
✔ Container server-channel-postgres-1 Healthy
✔ Container server-channel-livekit-1 Started
✔ Container server-channel-coturn-1 Started
✔ Container server-channel-app-1 Started
$ curl -s localhost:8080/healthz
{"status":"ok","version":"0.7.1"}
FFCom quer dizer Friends & Family Communication.
A turma para quem você liga sem avisar merece um lugar para conversar que seja de vocês, e não um espaço alugado de uma empresa que pode mudar as regras amanhã. O FFCom nasceu daí: para conversar com quem importa, num servidor que você controla.
O logo conta a mesma história. São dois f que dividem a mesma barra, como na ligadura clássica da tipografia, dentro de um balão de conversa: a barra que atravessa os dois é o laço entre as pessoas.
O FFCom está em testes com usuários reais na instância oficial, e o acesso ainda é por convite. O código é público no GitHub, e o que falta fazer está no TODO do projeto. As decisões técnicas, com as alternativas consideradas e o motivo de cada escolha, ficam em docs/architecture.md.
O que cada versão publicada trouxe. App, servidor central e servidor de comunidade têm versões independentes.