Blog do PlainApp

Notas técnicas

Análises detalhadas da arquitetura peer-to-peer, do design de transporte e da criptografia do PlainApp — direto do código-fonte.

Transport16 min read

DLNA Cast: Construindo um Remetente e Receptor UPnP do Zero

Como o PlainApp implementa o DLNA/UPnP AV em ambos os lados: escaneando e controlando TVs via SOAP como remetente, e transformando o próprio telefone em um MediaRenderer UPnP como receptor — com descoberta SSDP, metadados DIDL-Lite, serviço de mídia com suporte a Range Request, callbacks de eventos GENA e um modelo de confiança baseado em lista de permissão/negação por IP do remetente, tudo em Kotlin Multiplatform puro.

Ler artigo
Architecture15 min read

Screen Mirror: Arquitetura de Casting de Baixa Latência

Este artigo aborda o design ponta a ponta do sistema de screen mirror do PlainApp: como o Android captura e codifica H.264/Opus via MediaCodec, como os quadros trafegam via WebSocket usando um protocolo binário personalizado, como o lado web decodifica via WebCodecs e renderiza via WebGL2 com zero cópias em CPU, como a detecção de perda, mudança de orientação e controle remoto por toque são tratados, e como o ciclo de vida do MediaProjection é mantido em sincronia.

Ler artigo
Security12 min read

PlainApp Segurança: análise detalhada

Como o PlainApp protege seus dados na rede Wi-Fi local — com evidências do código open source.

Ler artigo
Transport19 min read

Design do Transporte Wi-Fi Aware — Descoberta de Vizinhos e Caminhos de Dados

Este artigo explica como o PlainApp usa Wi-Fi Aware (NAN — Neighbor Awareness Networking) como a camada intermediária da sua cadeia de fallback de transporte entre pares, entre a LAN (HTTPS na mesma sub-rede) e o BLE (RPC GATT de último recurso). O Wi-Fi Aware é o que faz dois dispositivos PlainApp conversarem quando estão em SSIDs diferentes, VLAN de visitantes vs IoT, ou sem qualquer infraestrutura Wi-Fi — sem jamais precisar de um endereço IP de um servidor DHCP.

Ler artigo
Transport15 min read

Design do Transporte BLE — Mensagens e Downloads de Arquivos

Este artigo explica como o PlainApp envia mensagens de chat e baixa arquivos via Bluetooth Low Energy quando nem a LAN nem o Wi-Fi Aware estão disponíveis. O BLE é o fallback garantido: lento, mas funciona sem qualquer conectividade IP. O artigo cobre o formato do protocolo, o design de fragmentação em duas camadas, como o tráfego concorrente é (e não é) priorizado e por que toda conexão é encerrada após cada requisição.

Ler artigo
Architecture12 min read

Arquitetura de Chat entre Pares e Canais

Este artigo explica como o chat offline-first do PlainApp funciona de ponta a ponta: como uma mensagem viaja de um toque na UI até outro dispositivo pelo transporte entre pares, como canais de grupo distribuem mensagens para muitos membros e como o sistema se mantém resiliente quando as redes desaparecem. O pareamento (a troca de confiança e chaves que inicializa dois dispositivos) é abordado no artigo separado Fluxo de Pareamento.

Ler artigo
Security10 min read

Fluxo de Pareamento

Este artigo explica como dois dispositivos PlainApp estabelecem confiança pela primeira vez — como eles se descobrem, trocam chaves e chegam à chave de transporte ChaCha20 compartilhada com a qual toda mensagem de chat, transferência de arquivo e ping de presença é criptografada em seguida. A arquitetura de chat e canais que consome essa chave é abordada no artigo separado Arquitetura de Chat.

Ler artigo