À propos du projet

PeerLink X est une messagerie multiplateforme conçue avec Flutter, s'articulant autour d'un cœur de réseau décentralisé. L'application combine le transport direct WebRTC pour les sessions entre pairs (utilisé par le trafic d'overlay) et les médias WebRTC routés via TURN pour les appels audio/vidéo, respectant une politique TURN-only. La livraison des messages utilise un système de stockage et transfert basé sur des relais via HTTP, avec un chiffrement au niveau applicatif pour l'identité, les signatures et les sessions. L'interface utilisateur comprend des sections fonctionnelles pour les Contacts, les Chats, les Appels et les Paramètres. Les accusés de réception des messages indiquent l'état de livraison : une coche pour le stockage confirmé, deux pour l'enregistrement durable par le destinataire, et trois pour la lecture (les messages de groupe affichant des coches après l'action du premier participant). Les listes de discussions affichent des indicateurs de réception et un formatage temporel (aujourd'hui en HH:MM, l'année en cours en DD:MM, les années précédentes en DD:MM:YY). Les messages composés uniquement d'emojis (1 à 3 emojis) s'affichent dans un grand format sans arrière-plan. Le stockage est persistant : stockage sécurisé pour les paramètres et l'identité, Drift/SQLite pour la base de données de chat, et système de fichiers pour les médias. Le déploiement auto-hébergé est pris en charge via les Paramètres, avec une progression par étapes, la configuration des points de terminaison et des tests de santé pour les serveurs de bootstrap, de relais et TURN. L'application utilise la signalisation bootstrap via WebSocket pour le transport et la signalisation d'appels, maintenant plusieurs connexions et utilisant des instantanés de présence pour le statut en ligne/hors ligne. Les fonctionnalités de confidentialité incluent des contacts internes à l'application (et non le répertoire système), donc les versions iOS/macOS ne demandent pas l'accès aux Contacts. La modération comprend l'acceptation des Conditions/CLUF, un mode « contacts uniquement » par défaut, et un système de signalement qui n'envoie que des métadonnées (pas le contenu des messages). Les avertissements et les bannissements sont définis par les modérateurs et affichés dans la langue de l'utilisateur. Les Paramètres gèrent les configurations de serveur (bootstrap, relay, TURN) avec des cartes triées par état de santé, un détail du stockage avec suppression par catégorie, et des liens profonds pour les invitations et la configuration du serveur (peerlink:// et URL de secours). Les notifications push s'intègrent au polling du relais, et l'application utilise un contrat d'API Push défini avec des signatures Ed25519 et un système anti-replay. Les fonctionnalités de groupe incluent une livraison unifiée, le transport de blobs pour les médias et la rotation des clés lors des changements de membres. Les appels utilisent TURN pour garantir la stabilité à travers les différents types de réseaux.