Skip to content
This repository was archived by the owner on Oct 14, 2025. It is now read-only.

Liberchat/Liberchat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 **Branche de développement active : `Liberchat-6.1.20

🚩✊ Liberchat — La Commune Numérique

Liberchat Logo

« Pour l’autogestion, la solidarité et la liberté numérique. Un chat libre, par et pour le peuple. »

Anticapitaliste Logiciel Libre Anarcho-syndicaliste

Version React TypeScript Socket.io TailwindCSS

Un chat en temps réel, autogéré, horizontal, pour la Commune numérique.

📝 Documentation | 🤝 Contribuer | 📧 Contact


🏴 Pourquoi un chat anarcho-syndicaliste ?

« La communication libre est une arme. Organisons-nous, partageons, résistons ! »

  • Aucune hiérarchie, pas de chef : tout le monde a le même pouvoir.
  • Respect de la vie privée : pas de tracking, pas de pub, pas de collecte de données.
  • Code ouvert, transparent, modifiable : fork, partage, autogestion.
  • Solidarité et entraide : entraide technique et humaine, support communautaire.
  • Hébergement décentralisé possible : pour ne dépendre d’aucun géant du web.

✨ Caractéristiques Principales


Chat en Temps Réel

Liste des Utilisateurs

Sécurisé
🌙
Thème Sombre
🎨
Style Moderne

🎯 Fonctionnalités Détaillées

  • 💬 Chat en Temps Réel

    • Messages instantanés
    • Indicateur de frappe
    • Historique des messages
    • Support complet des emojis
    • Interface responsive mobile
    • Support des liens enrichis (embed) : les liens partagés dans le chat affichent un aperçu (titre, image, description) s’ouvrent dans un nouvel onglet sans déconnexion de session.
  • 👥 Gestion des Utilisateurs

    • Liste des utilisateurs en ligne
    • Statuts de connexion
    • Notifications en temps réel
    • Noms d'utilisateur uniques
  • 🛡️ Sécurité

    • Connexions sécurisées
    • Authentification utilisateur
    • Protection contre le spam
    • Variables d'environnement sécurisées
  • 🎨 Interface

    • Thème sombre élégant
    • Animations fluides
    • Interface intuitive et responsive
    • Style moderne
    • Sélecteur d'emojis intégré
    • Optimisations mobile/desktop
    • 🖍️ Thèmes personnalisables CSS : créez vos propres thèmes avec du CSS personnalisé
  • 🎤 Messages vocaux universels

    • Enregistrement vocal intégré (bouton micro)
    • Lecture et envoi de vocaux chiffrés de bout en bout
    • Compatibilité maximale : Chrome, Firefox (ESR inclus), Edge, Safari, Electron, Android, iOS, WebView…
    • Sélection automatique du format audio optimal (ogg/opus, webm/opus, mp4)
    • Lecture sans téléchargement, sans fuite de la clé
    • Impossible de télécharger les vocaux (confidentialité renforcée)
  • 🖼️ Images chiffrées de bout en bout (E2EE)

    • Toutes les images envoyées dans le chat sont chiffrées avant d’être transmises au serveur
    • Seuls les utilisateurs ayant la clé peuvent les voir
    • Le serveur ne voit jamais le contenu des images
  • 🎤 Messages vocaux chiffrés de bout en bout (E2EE)

    • Les messages audio sont chiffrés comme les messages texte et images
    • Confidentialité totale : seuls les utilisateurs avec la clé peuvent écouter les vocaux
    • Le serveur ne fait que relayer les données chiffrées
  • 📲 Progressive Web App (PWA)

    • Installation sur l'écran d'accueil (iOS, Android, desktop)
    • Support du mode hors-ligne (service worker)
    • Manifest et icônes adaptés pour mobile
  • Réactions Emoji Chiffrées (E2EE)

    • Ajoutez des réactions emoji à chaque message
    • Les réactions sont chiffrées de bout en bout : seuls les utilisateurs ayant la clé voient qui a réagi et avec quel emoji
    • Synchronisation en temps réel entre tous les clients
    • Respect total de la vie privée : le serveur ne connaît jamais le contenu des réactions

Nouveautés

♿ Mode Accessibilité

LiberChat intègre désormais un mode accessibilité complet pour les personnes en situation de handicap !

Fonctionnalités :

  • Contraste élevé (noir/blanc/jaune)
  • Taille de police ajustable (4 niveaux)
  • Police dyslexie (Comic Sans MS)
  • Réduction des animations
  • Support lecteurs d'écran avec annonces vocales
  • Navigation clavier complète (Alt+A, Alt+T, Alt+Q)
  • Étiquettes ARIA et conformité WCAG 2.1 niveau AA

Accès : Bouton ♿ dans l'en-tête ou raccourci Alt+A

🎨 Mode Light

Vous pouvez désormais profiter d'une interface en mode clair !
Pour activer le mode light :

  1. Ouvrez les Paramètres de l'application.
  2. Sélectionnez l'option Mode clair.

💡 Astuce : Vous pouvez basculer à tout moment entre le mode sombre et le mode clair selon vos préférences.

🆕 Nouveautés de la version 6.1.16

  • Voir section "Corrections et changements récents (6.1.16)" ci-dessus.

🆕 Corrections et changements récents (6.1.16)

  • Nouveau sélecteur d’emojis intégré : remplacement de emoji-mart par emoji-picker-react, plus compact et adapté à l’encadré, sans débordement sur mobile ou desktop.
  • Correction du bug d’affichage du menu emojis (ne déborde plus de l’encadré stylisé, responsive sur tous les écrans).
  • Correction de l’ajout d’emoji dans les réactions (plus de undefined, compatibilité assurée avec le nouveau picker).
  • Amélioration CSS pour garantir la compatibilité mobile et l’accessibilité du champ de saisie.
  • README mis à jour pour refléter ces changements.

🆕 Nouveautés de la version 6.1.20

  • 🎨 Correction des thèmes personnalisés en mode clair : les thèmes CSS personnalisés fonctionnent maintenant parfaitement avec le mode light.
  • ⚡ Optimisation des performances : correction de la boucle infinie dans le hook useCustomThemes pour une meilleure stabilité.
  • 🔧 Amélioration de l'application des thèmes : logique d'application des thèmes repensée pour une compatibilité maximale.
  • 🖍️ Thèmes prédéfinis améliorés : thèmes Rouge Anarchiste, Cyberpunk et Bleu Clair optimisés pour tous les modes.

🆕 Nouveautés de la version 6.1.18

  • Indicateur « en train d’écrire » amélioré : affichage dynamique au-dessus de la zone de saisie, visible en temps réel pour tous les utilisateurs.
  • Prévisualisation audio avant envoi : possibilité d’écouter, d’envoyer ou d’annuler un message vocal avant qu’il ne soit transmis.
  • Correction des erreurs de typage TypeScript liées à Socket.IO côté client (meilleure compatibilité et stabilité du chat).
  • Documentation de la gestion des branches git : conseils pour créer, basculer et pousser correctement les branches de développement.
  • Amélioration de la robustesse de la connexion WebSocket/Socket.IO côté client (meilleure gestion des ports et de l’URL de connexion).

🆕 Corrections et changements récents (6.1.20)

  • 🎨 Correction majeure des thèmes personnalisés : résolution du problème d'incompatibilité avec le mode clair, les thèmes CSS s'appliquent maintenant correctement sur tous les modes.
  • ⚡ Optimisation du hook useCustomThemes : suppression de la boucle infinie causée par les dépendances problématiques dans useEffect.
  • 🔧 Amélioration de la logique d'application des thèmes : refactorisation complète pour une meilleure gestion des priorités CSS.
  • 🖍️ Thèmes prédéfinis stabilisés : tous les thèmes (Rouge Anarchiste, Cyberpunk, Bleu Clair) fonctionnent parfaitement en mode sombre et clair.

🆕 Corrections et changements récents (6.1.19)

  • ♿ Implémentation complète de l'accessibilité : bouton dédié dans l'en-tête, paramètres sauvegardés localement, conformité WCAG 2.1 niveau AA, étiquettes ARIA complètes.
  • Support des lecteurs d'écran (NVDA, JAWS, VoiceOver, TalkBack, Orca) avec annonces vocales automatiques.
  • Navigation clavier complète avec raccourcis globaux et focus visible renforcé.
  • 🖍️ Thèmes personnalisables : interface pour créer, modifier et appliquer des thèmes CSS personnalisés avec thèmes prédéfinis (Rouge Anarchiste, Cyberpunk).

🆕 Corrections et changements récents (6.1.18)

  • Ajout de la prévisualisation audio dans la zone de saisie : l’utilisateur peut écouter son message vocal avant de l’envoyer ou de l’annuler.
  • Affichage de l’indicateur « en train d’écrire » au-dessus de la zone de saisie, visible par tous les participants.
  • Correction temporaire du typage du socket côté client pour éviter les erreurs TypeScript bloquantes.
  • Conseils et corrections sur la gestion des branches git (création, push, résolution d’erreurs de référence).
  • Correction de la configuration de l’URL Socket.IO côté client pour garantir la connexion au bon serveur backend.

🗑️✏️ Fonctionnalités de gestion des messages

  • Modification : Seuls les messages texte peuvent être modifiés après envoi.
  • Suppression : Tous les types de messages peuvent être supprimés par leur auteur.
  • Menu contextuel : Accessible par clic droit ou appui long, il permet de répondre, modifier (texte uniquement) ou supprimer un message.
  • Expérience mobile : Le menu contextuel est adapté au mobile (taille réduite, pas de scroll inutile).
  • Messages non modifiables : Les messages audio et images ne peuvent pas être modifiés pour garantir l'intégrité des fichiers partagés.

🖼️ Médias et Expressions

  • 😀 Support Complet des Emojis

    • Sélecteur d'emojis intuitif
    • Catégories organisées
    • Recherche rapide
    • Thème sombre intégré
  • 📎 Partage de Fichiers

    • Support des images
    • Vérification de taille
    • Prévisualisation intégrée
    • Aperçu en grand des images envoyées : cliquez sur une image pour l'afficher en plein écran (zoom)

    🛡️ Mentions spéciales sécurité & architecture

  • Chiffrement de bout en bout (E2EE) sur tous les navigateurs et appareils : vos messages ne sont jamais envoyés en clair, même sur navigateurs anciens (fallback JS crypto-js si besoin).

  • Aucune donnée en clair n’est jamais transmise au serveur.

  • Un seul projet, un seul dépôt : frontend (React) et backend (Node.js/Express/Socket.io) sont réunis dans ce même dépôt pour une autogestion et une simplicité maximale.

📚 Documentation

📚 Wiki & Documentation

Le projet Liberchat dispose d’un wiki complet pour l’installation, l’auto-hébergement, la gestion, la désinstallation et la contribution, en version terminal (CLI) ou graphique (GUI).

➡️ Accès direct au wiki :

Le wiki est accessible dans le dossier docs/ du dépôt ou en ligne sur GitHub.

🚀 Démarrage Rapide

# 1. Installez les dépendances
npm install

# 2. Lancez en mode développement
npm run dev

🛠️ Technologies Utilisées

📦 Installation

Prérequis

  • Node.js (v14+)
  • npm ou yarn
  • Un navigateur moderne

Configuration

  1. Variables d'Environnement
NODE_ENV=production
PORT=3000
  1. Configuration Render.com
Build Command: npm install --production=false && npm run build
Start Command: npm start

🌟 Utilisation

Démarrage (pour les utilisateurs)

  1. Définis la clé de chiffrement

    • Saisis un mot de passe fort (ou laisse vide pour générer une clé aléatoire).
    • Partage cette clé avec tes camarades (copie/colle).
    • Tous les membres doivent utiliser exactement la même clé pour lire les messages.
    • Tous les membres doivent utiliser exactement la même clé pour lire les messages.
  2. Accède à l’application

  3. Choisis un nom d'utilisateur

    • Entre un pseudo unique pour rejoindre le salon.
  4. Commence à chatter !

    • Envoie des messages, des fichiers, des emojis…
    • Profite du chiffrement de bout en bout.
  • Pour activer le mode light, rendez-vous dans les paramètres et sélectionnez "Mode clair".

🖼️ Aperçu de l'interface

Interface de saisie de la clé de chiffrement

Interface clé de chiffrement LiberChat

Écran d'accueil

Aperçu accueil LiberChat

Interface de chat

Aperçu chat LiberChat

🤝 Contribution

« Le code appartient à la communauté. Rejoins-nous, propose, améliore, partage ! »

Nous adorons les contributions collectives ! Voici comment participer :

  1. 🔧 Crée une branche pour ta fonctionnalité (git checkout -b feature/maFonctionMilitante)
  2. 💫 Committe tes changements (git commit -m 'Ajout de ma fonctionnalité')
  3. 🚀 Pousse vers la branche (git push origin feature/maFonctionMilitante)
  4. 🎉 Ouvre une Pull Request (PR) — tout le monde peut relire et discuter

Aucune contribution n’est trop petite, tout le monde est bienvenu·e !

📄 Licence

Distribué sous la licence MIT, avec préambule militant. Voir LICENSE pour plus d'informations.


Liberchat Logo

Fait par et pour la communauté, dans l’esprit de la Commune numérique.


🚀 Script d’auto-hébergement

Un script automatisé est fourni pour installer et configurer facilement Liberchat sur votre propre serveur (HTTPS, Nginx/Apache, ou Tor .onion personnalisé).

➡️ Voir la documentation détaillée : docs/auto_hebergement.md


🟢 Guide ultra-simple pour débutant·e

Pour une prise en main rapide, consultez le guide pas à pas pour novice : 👉 docs/Guide_novice.md