Note tecniche
Approfondimenti sull'architettura peer-to-peer, sulla progettazione del trasporto e sulla crittografia di PlainApp — direttamente dal codice sorgente.
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.
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.
PlainApp Sicurezza: analisi approfondita
Come PlainApp protegge i tuoi dati sul Wi-Fi locale — con prove dal codice open source.
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.
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.
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.
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.