Como o MindTheClub funciona

Um sistema sobre o qual você pode raciocinar

A maioria dos aplicativos de mensagens pede que você confie neles. Dizem que suas mensagens são criptografadas, que seus dados estão seguros, que sua privacidade importa — e então roteiam tudo pelos servidores deles, onde seu conteúdo existe numa forma que você não pode verificar nem controlar.

O MindTheClub segue um caminho diferente. Em vez de pedir confiança, construímos um sistema simples o bastante para ser entendido, para que você mesmo possa raciocinar sobre o que acontece com seus dados. Acreditamos que a qualidade mais importante de uma ferramenta de comunicação é a previsibilidade: ao enviar uma mensagem, você deveria saber exatamente para onde ela vai, que caminho percorre e onde termina. Sem surpresas.

Veja como funciona.

Suas mensagens viajam diretamente entre dispositivos

O MindTheClub é um app de mensagens peer-to-peer. Quando você envia uma mensagem, ela viaja diretamente do seu telefone para o telefone do destinatário. Não há nenhum servidor do MindTheClub no meio que armazene, leia, processe ou retransmita seu conteúdo.

Isso é possível graças ao WebRTC, o mesmo padrão aberto que move as chamadas de vídeo no seu navegador. O WebRTC estabelece um canal de dados direto e criptografado entre dois dispositivos. Sua mensagem entra nesse canal de um lado e sai do outro. Essa é toda a jornada.

Quando dois dispositivos estão atrás de firewalls ou em redes móveis que dificultam conexões diretas, a conexão é retransmitida por um servidor TURN hospedado na rede global da Cloudflare. Mesmo nesse caso, o relay apenas repassa pacotes criptografados: ele não consegue ler o conteúdo. Pense nele como um carteiro que carrega um envelope lacrado: conhece o destino, mas nunca vê o que há dentro.

Sinalização: como os dispositivos se encontram

Antes que dois dispositivos possam estabelecer uma conexão direta, eles precisam combinar como se conectar, trocando endereços de rede, chaves de criptografia e parâmetros de conexão. Essa negociação chama-se sinalização, e é a única etapa que toca um servidor.

O MindTheClub usa um Cloudflare Worker como relay de sinalização leve. Os dados de sinalização são efêmeros: servem apenas para montar a conexão e não têm valor depois. Não contêm nenhum conteúdo de mensagens.

Concluída a sinalização e aberto o canal WebRTC, o papel do servidor acaba. Tudo o que segue acontece diretamente entre os dois dispositivos.

Acordando um telefone adormecido

Os celulares economizam bateria agressivamente. Quando um telefone está ocioso, suas conexões de rede são suspensas. Então como enviar uma mensagem para alguém cujo telefone está dormindo?

O MindTheClub usa o Firebase Cloud Messaging (FCM), a mesma infraestrutura de notificações push usada por praticamente todo app Android, para enviar um leve sinal de despertar. Esse sinal não contém conteúdo de mensagens; ele simplesmente diz ao dispositivo do destinatário: "Alguém quer te enviar algo. Acorde e conecte-se."

O dispositivo do destinatário acorda, estabelece uma conexão WebRTC de volta ao remetente, e a mensagem de verdade é transmitida diretamente, peer-to-peer, como sempre.

Enviando conteúdo grande em blocos

Uma foto, um vídeo, uma nota de voz — podem ter megabytes de tamanho, e conexões móveis podem ser interrompidas a qualquer momento. Enviar um arquivo grande como um único bloco significaria recomeçar do zero se algo desse errado.

O MindTheClub divide conteúdos grandes em pequenos blocos e os envia sequencialmente pelo canal de dados WebRTC. O dispositivo receptor remonta os blocos e verifica o resultado. Se a conexão cair no meio da transferência, apenas os blocos faltantes precisam ser reenviados, não o arquivo inteiro.

É o mesmo princípio usado por todo protocolo confiável de transferência de arquivos. Não é novidade, mas é essencial para uma boa experiência nas redes móveis do mundo real.

Entrega garantida

O que acontece se o destinatário estiver num avião, com o telefone desligado ou num túnel? A mensagem não pode ser entregue agora, mas precisa ser entregue em algum momento.

O MindTheClub usa o WorkManager do Android para garantir a entrega. Quando uma mensagem não pode ser enviada imediatamente, ela é guardada localmente e agendada para nova tentativa. O WorkManager sobrevive a reinícios do app, reinicializações do dispositivo e à otimização de bateria. Ele continuará tentando, com esperas apropriadas, até a mensagem ser entregue.

Combinado com os sinais de despertar do FCM, isso cria uma cadeia de entrega confiável: sua mensagem fica guardada em segurança no seu dispositivo, um aviso de despertar é enviado quando o destinatário provavelmente está alcançável, e a transferência direta se completa assim que os dois dispositivos estão online. Em nenhum momento o conteúdo da mensagem fica num servidor esperando ser retirado.

Mensagens em grupo: o protocolo de fofoca (gossip)

Mensagens em grupo num sistema peer-to-peer apresentam um desafio único. Num app tradicional, você envia uma cópia ao servidor e o servidor a distribui para cada membro do grupo. Sem servidor, o remetente teria que se conectar a cada membro individualmente, o que escala mal e falha por completo se alguns membros estiverem inalcançáveis.

O MindTheClub resolve isso com um protocolo gossip. O remetente transmite a mensagem aos membros do grupo que consegue alcançar. Esses membros, por sua vez, podem retransmitir a mensagem a outros membros que o remetente não alcançou. Como um boato se espalhando por uma sala, a mensagem se propaga até que todos tenham uma cópia.

Se um membro do grupo ficar online mais tarde e descobrir que está sem uma mensagem, ele a pede a qualquer membro que já a tenha, não apenas ao remetente original. Isso torna a entrega em grupo resiliente: nenhum dispositivo é um gargalo, e o grupo não depende de um membro específico estar online.

O que isso significa na prática

Quando você usa o MindTheClub, o comportamento do sistema é previsível:

Não construímos o MindTheClub assim porque peer-to-peer está na moda. Construímos assim porque o resultado é um sistema cujo comportamento você pode prever e verificar. E acreditamos que essa é uma base para a confiança melhor do que qualquer política de privacidade.