Blog PlainApp

Note tecniche

Approfondimenti sull'architettura peer-to-peer, sulla progettazione del trasporto e sulla crittografia di PlainApp — direttamente dal codice sorgente.

Transport16 min read

DLNA Cast: Costruire un Mittente e un Ricevitore UPnP da Zero

Come PlainApp implementa il DLNA/UPnP AV su entrambi i lati: scansionare e controllare TV via SOAP come mittente, e trasformare il telefono stesso in un MediaRenderer UPnP come ricevitore — con SSDP discovery, metadati DIDL-Lite, media serving con Range request, callback GENA event, e un modello di fiducia basato su IP mittente allow/deny, tutto in puro Kotlin Multiplatform.

Leggi l'articolo
Architecture15 min read

Screen Mirror: Architettura di Casting a Bassa Latenza

Questo articolo illustra la progettazione end-to-end del sistema di screen mirror di PlainApp: come Android cattura e codifica via hardware H.264/Opus con MediaCodec, come i frame viaggiano su WebSocket tramite un protocollo binario personalizzato, come il lato web decodifica con WebCodecs e renderizza con WebGL2 senza copie CPU, come vengono gestiti la perdita di pacchetti, i cambi di orientamento e il controllo touch remoto, e come viene mantenuto sincronizzato il ciclo di vita del sistema MediaProjection.

Leggi l'articolo
Security12 min read

PlainApp Sicurezza: analisi approfondita

Come PlainApp protegge i tuoi dati sul Wi-Fi locale — con prove dal codice open source.

Leggi l'articolo
Transport19 min read

Design del Trasporto Wi-Fi Aware — Neighbor Discovery e Data Path

Questo articolo spiega come PlainApp usi Wi-Fi Aware (NAN — Neighbor Awareness Networking) come livello intermedio della sua catena di fallback del peer transport, tra LAN (HTTPS same-subnet) e BLE (RPC GATT di ultima istanza). Wi-Fi Aware è ciò che permette a due dispositivi PlainApp di parlarsi quando sono su SSID diversi, guest vs IoT VLAN, o senza alcuna infrastruttura Wi-Fi — senza mai aver bisogno di un indirizzo IP da un server DHCP.

Leggi l'articolo
Transport15 min read

Design del Trasporto BLE — Messaggi e Download File

Questo articolo spiega come PlainApp invii messaggi di chat e scarichi file via Bluetooth Low Energy quando né LAN né Wi-Fi Aware sono disponibili. BLE è il fallback garantito: lento, ma funziona senza alcuna connettività IP. L'articolo tratta il wire format, il design a due livelli di chunking, come il traffico concorrente viene (o non viene) priorizzato, e perché ogni connessione viene abbattuta dopo ogni richiesta.

Leggi l'articolo
Architecture12 min read

Architettura Chat Peer e Canali

Questo articolo spiega come funziona end-to-end la chat offline-first di PlainApp: come un messaggio viaggia da un tap nella UI fino a un altro dispositivo via peer transport, come i canali di gruppo distribuiscono i messaggi a molti membri, e come il sistema rimane resiliente quando le reti spariscono. Il pairing (la fiducia e lo scambio di chiavi che bootstrap due dispositivi) è trattato nel separato articolo Pairing Flow.

Leggi l'articolo
Security10 min read

Flusso di Pairing

Questo articolo spiega come due dispositivi PlainApp stabiliscano fiducia per la prima volta — come si scoprono a vicenda, scambiano chiavi e arrivano alla chiave di trasporto ChaCha20 condivisa con cui vengono cifrati ogni messaggio di chat, trasferimento di file e ping di presenza. L'architettura chat e canali che consuma questa chiave è trattata nel separato articolo Chat Architecture.

Leggi l'articolo