Sobre el proyecto

PeerLink X es un mensajero multiplataforma construido con Flutter, diseñado en torno a un núcleo de red descentralizado. La aplicación combina el transporte directo de WebRTC para sesiones entre pares (utilizado por el tráfico de superposición) y medios WebRTC enrutados por TURN para llamadas de audio/video, adhiriéndose a una política de solo TURN. La entrega de mensajes utiliza un sistema de almacenamiento y reenvío basado en relevos sobre HTTP, con criptografía a nivel de aplicación para identidad, firmas y sesiones. La interfaz de usuario incluye secciones funcionales para Contactos, Chats, Llamadas y Configuración. Los acuses de recibo de los mensajes indican el estado de entrega: una marca para almacenamiento confirmado, dos para guardado duradero en el receptor y tres para leído (los mensajes grupales muestran marcas después de la acción del primer participante). Las listas de chat muestran indicadores de recibo y formato de hora (hoy como HH:MM, año actual como DD:MM, años anteriores como DD:MM:YY). Los mensajes que contienen solo emojis (1-3 emojis) se renderizan en un formato grande sin fondo. El almacenamiento es persistente: almacenamiento seguro para configuraciones e identidad, Drift/SQLite para la base de datos de chat y el sistema de archivos para archivos multimedia. El despliegue auto-alojado es compatible a través de Configuración, con progreso basado en etapas, configuración de endpoints y comprobaciones de estado para los servidores de bootstrap, relay y TURN. La aplicación utiliza señalización de bootstrap sobre WebSocket para el transporte y la señalización de llamadas, manteniendo múltiples conexiones y utilizando instantáneas de presencia para el estado en línea/fuera de línea. Las funciones de privacidad incluyen contactos internos de la aplicación (no la agenda del sistema), por lo que las versiones de iOS/macOS no solicitan acceso a los Contactos. La moderación incluye la aceptación de Términos/EULA, modo de solo contactos por defecto y reportes que envían únicamente metadatos (no el contenido del mensaje). Las advertencias y prohibiciones son establecidas por moderadores y se muestran en el idioma local del usuario. La Configuración gestiona las configuraciones del servidor (bootstrap, relay, TURN) con tarjetas ordenadas por estado de salud, desglose de almacenamiento con eliminación por categoría y enlaces profundos para invitaciones y configuración del servidor (peerlink:// y URLs de respaldo). Las notificaciones push se integran con el sondeo de relay, y la aplicación utiliza un contrato de API de Push definido con firmas Ed25519 y anti-replay. Las funciones grupales incluyen entrega unificada, transporte de blobs para multimedia y rotación de claves al cambiar la membresía. Las llamadas utilizan TURN para garantizar la estabilidad en diversos tipos de red.