Technische notities
Diepgaande analyses van PlainApp's peer-to-peer-architectuur, transportontwerp en cryptografie — rechtstreeks uit de broncode.
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.
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.
PlainApp Beveiliging: diepgaande analyse
Hoe PlainApp uw gegevens op het lokale Wi-Fi-netwerk beschermt — met bewijs uit de open-sourcecode.
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.
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.
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.
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.