PlainApp Blog

Technische notities

Diepgaande analyses van PlainApp's peer-to-peer-architectuur, transportontwerp en cryptografie — rechtstreeks uit de broncode.

Transport16 min read

DLNA Cast: Een UPnP-zender en -ontvanger vanaf nul bouwen

Hoe PlainApp DLNA/UPnP AV-casting aan beide kanten implementeert: als zender via SOAP tv's scannen en aansturen, en de telefoon zelf omtoveren tot een UPnP MediaRenderer als ontvanger — met SSDP-detectie, DIDL-Lite-metadata, media-server met Range-verzoeken, GENA-event-callbacks en een vertrouwensmodel met IP-blokkeer-/toestaanlijsten, allemaal in puur Kotlin Multiplatform.

Artikel lezen
Architecture15 min read

Schermspiegeling: Low-Latency Casting-architectuur

Dit artikel behandelt de end-to-end-ontwerp van PlainApp's schermspiegelingssysteem: hoe Android met MediaCodec H.264/Opus hardwarematig encodeert, hoe frames via WebSocket met een eigen binair protocol worden getransporteerd, hoe de webkant via WebCodecs decodeert en via WebGL2 met zero CPU-kopieën rendert, hoe pakketverlies, oriëntatiewijzigingen en aanraakbediening op afstand worden afgehandeld, en hoe de systeem-MediaProjection-levenscyclus gesynchroniseerd blijft.

Artikel lezen
Security12 min read

PlainApp Beveiliging: diepgaande analyse

Hoe PlainApp uw gegevens op het lokale Wi-Fi-netwerk beschermt — met bewijs uit de open-sourcecode.

Artikel lezen
Transport19 min read

Wi-Fi Aware-transportontwerp — Neighbor Discovery en data-paden

Dit artikel legt uit hoe PlainApp Wi-Fi Aware (NAN — Neighbor Awareness Networking) gebruikt als de middelste laag van zijn peer-transport-fallback-chain, tussen LAN (same-subnet HTTPS) en BLE (last-resort GATT RPC). Wi-Fi Aware is wat twee PlainApp-apparaten laat communiceren wanneer ze op verschillende SSID's zitten, gast versus IoT-VLAN's, of helemaal geen Wi-Fi-infrastructuur — zonder ooit een IP-adres van een DHCP-server nodig te hebben.

Artikel lezen
Transport15 min read

BLE-transportontwerp — Berichten en bestandsdownloads

Dit artikel legt uit hoe PlainApp chatberichten pusht en bestanden downloadt via Bluetooth Low Energy wanneer noch LAN, noch Wi-Fi Aware beschikbaar is. BLE is de gegarandeerde fallback: traag, maar het werkt zonder enige IP-connectiviteit. Het artikel behandelt het wire-formaat, het tweelagige chunking-ontwerp, hoe gelijktijdig verkeer wel en niet wordt geprioriteerd, en waarom elke verbinding na elk verzoek wordt afgebroken.

Artikel lezen
Architecture12 min read

Peer- en kanaal-chatarchitectuur

Dit artikel legt uit hoe de offline-first-chat van PlainApp end-to-end werkt: hoe een bericht reist van een tik in de UI helemaal naar een ander apparaat via het peer-transport, hoe groepskanalen berichten uitwaaieren naar veel leden, en hoe het systeem veerkrachtig blijft wanneer netwerken verdwijnen. Koppeling (de vertrouwens- en sleuteluitwisseling die twee apparaten bootstrapt) wordt behandeld in het afzonderlijke artikel Koppelingsproces.

Artikel lezen
Security10 min read

Koppelingsproces

Dit artikel legt uit hoe twee PlainApp-apparaten voor het eerst vertrouwen opbouwen — hoe ze elkaar ontdekken, sleutels uitwisselen, en uitkomen bij de gedeelde ChaCha20-transportsleutel waarmee elk chatbericht, elke bestandsoverdracht en elke presence-ping daarna wordt versleuteld. De chat- en kanaalarchitectuur die deze sleutel gebruikt, wordt behandeld in het afzonderlijke artikel Chatarchitectuur.

Artikel lezen