Blog de PlainApp

Notas técnicas

Análisis profundos de la arquitectura peer-to-peer, el diseño del transporte y la criptografía de PlainApp — directamente desde el código fuente.

Transport16 min read

DLNA Cast: Creando un Emisor y Receptor UPnP Desde Cero

Cómo PlainApp implementa la proyección DLNA/UPnP AV en ambos sentidos: escaneando y controlando televisores vía SOAP como emisor, y convirtiendo el propio teléfono en un UPnP MediaRenderer como receptor — con descubrimiento SSDP, metadatos DIDL-Lite, servicio de medios con soporte de Range Requests, callbacks de eventos GENA y un modelo de confianza basado en IP de origen permitida/denegada, todo en Kotlin Multiplatform puro.

Leer artículo
Architecture15 min read

Screen Mirror: Arquitectura de Proyeccion de Baja Latencia

Este articulo cubre el diseno integral del sistema de proyeccion de pantalla de PlainApp: como Android captura y codifica via hardware H.264/Opus con MediaCodec, como los fotogramas viajan por WebSocket usando un protocolo binario personalizado, como el lado web decodifica con WebCodecs y renderiza con WebGL2 sin copias por CPU, como se manejan la deteccion de perdidas, los cambios de orientacion y el control tactil remoto, y como se mantiene sincronizado el ciclo de vida de MediaProjection.

Leer artículo
Security12 min read

PlainApp Seguridad: análisis detallado

Cómo PlainApp protege tus datos en la red Wi-Fi local — con evidencia del código abierto.

Leer artículo
Transport19 min read

Diseño del transporte Wi-Fi Aware — descubrimiento de vecinos y rutas de datos

Este artículo explica cómo PlainApp usa Wi-Fi Aware (NAN — Neighbor Awareness Networking) como nivel intermedio de su cadena de fallback de transporte entre pares, entre LAN (HTTPS de misma subred) y BLE (RPC GATT de último recurso). Wi-Fi Aware es lo que permite que dos dispositivos PlainApp hablen cuando están en distintos SSID, VLAN de invitados vs IoT, o sin infraestructura Wi-Fi alguna — sin necesitar jamás una dirección IP de un servidor DHCP.

Leer artículo
Transport15 min read

Diseño del transporte BLE — Mensajes y descargas de archivos

Este artículo explica cómo PlainApp envía mensajes de chat y descarga archivos por Bluetooth Low Energy cuando ni la LAN ni Wi-Fi Aware están disponibles. BLE es el fallback garantizado: lento, pero funciona sin ningún tipo de conectividad IP. El artículo cubre el formato de transmisión, el diseño de fragmentación de dos capas, cómo el tráfico concurrente se prioriza (y cómo no), y por qué cada conexión se derriba tras cada solicitud.

Leer artículo
Architecture12 min read

Arquitectura de chat entre pares y canales

Este artículo explica cómo funciona el chat offline-first de PlainApp de punta a punta: cómo un mensaje viaja desde un toque en la UI hasta otro dispositivo a través del transporte entre pares, cómo los canales grupales distribuyen mensajes a muchos miembros, y cómo el sistema se mantiene resiliente cuando las redes desaparecen. El emparejamiento (la confianza e intercambio de claves que arranca dos dispositivos) se cubre en el artículo independiente Flujo de emparejamiento.

Leer artículo
Security10 min read

Flujo de emparejamiento

Este artículo explica cómo dos dispositivos PlainApp establecen confianza por primera vez — cómo se descubren mutuamente, intercambian claves y llegan a la clave de transporte ChaCha20 compartida con la que posteriormente se cifra cada mensaje de chat, transferencia de archivos y ping de presencia. La arquitectura de chat y canales que consume esta clave se cubre en el artículo independiente Arquitectura de Chat.

Leer artículo