{"id":14978445,"url":"https://github.com/johan-perso/localchat","last_synced_at":"2026-01-19T08:01:52.750Z","repository":{"id":229332324,"uuid":"776463159","full_name":"johan-perso/localchat","owner":"johan-perso","description":"Un chat par réseau, décentralisé, qui n'utilise pas Internet","archived":false,"fork":false,"pushed_at":"2024-04-15T13:44:16.000Z","size":1027,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-05-06T12:26:23.089Z","etag":null,"topics":["chat","electron","electronjs","lan","local","local-network","localhost","menubar","menubar-app","tailwindcss","tray-app","tray-menu"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johan-perso.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-03-23T15:25:05.000Z","updated_at":"2024-04-15T10:15:53.000Z","dependencies_parsed_at":"2024-03-26T13:28:01.623Z","dependency_job_id":"567e85c0-40b2-44d1-9939-3a28301b3dce","html_url":"https://github.com/johan-perso/localchat","commit_stats":null,"previous_names":["johan-perso/localchat"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/johan-perso/localchat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johan-perso%2Flocalchat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johan-perso%2Flocalchat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johan-perso%2Flocalchat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johan-perso%2Flocalchat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johan-perso","download_url":"https://codeload.github.com/johan-perso/localchat/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johan-perso%2Flocalchat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28563217,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-19T03:31:16.861Z","status":"ssl_error","status_checked_at":"2026-01-19T03:31:15.069Z","response_time":67,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","electron","electronjs","lan","local","local-network","localhost","menubar","menubar-app","tailwindcss","tray-app","tray-menu"],"created_at":"2024-09-24T13:57:38.555Z","updated_at":"2026-01-19T08:01:52.744Z","avatar_url":"https://github.com/johan-perso.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LocalChat\n\nUne application pour discuter au sein d'un réseau local, de manière décentralisée, sans avoir à utiliser une connexion à Internet.  \n\n\u003e À la base c'était un projet pour profiter du réseau de mon lycée qui n'a pas d'accès à Internet, le projet ne sera sûrement pas mis à jour.  \n\u003e Projet basé sur le code source d'[Agendapp](https://github.com/johan-perso/agendapp), une application d'organisation des devoirs et de prise de notes.\n\n![SCR-20241018-tkut](https://github.com/user-attachments/assets/8633e5a4-ec86-4c1d-bb60-b50c6ec8444b)\n\n\n## Installation\n\n### Windows\n\n* Téléchargez le fichier `LocalChat-*-win32-x64.zip` dans la section [Releases](https://github.com/johan-perso/localchat/releases/latest) de ce dépôt.\n* Décompressez le fichier ZIP puis exécutez le fichier `LocalChat.exe` pour démarrer l'application.\n* Vous pouvez créer un raccourci vers `LocalChat.exe` pour lancer l'application plus facilement.\n\n### macOS\n\n* Cherchez et téléchargez le fichier `LocalChat-*-macos-*.dmg` (en fonction de votre architecture, Intel = x64 ; Sillicon = arm64) dans la section [Releases](https://github.com/johan-perso/localchat/releases/latest) de ce dépôt.\n* Ouvrez le fichier DMG puis déplacez l'application `LocalChat.app` dans le dossier Applications.\n\n\u003e Pour ouvrir ce fichier sur un processeur Apple Silicon (M1 et supérieur), vous devrez potentiellement exécuter ces commandes dans le terminal :\n\n```bash\nsudo spctl --master-disable\nsudo chmod -R 777 /Applications/LocalChat.app\nxattr -d com.apple.quarantine /Applications/LocalChat.app\nxattr -cr /Applications/LocalChat.app\n```\n\n\n## Fonctionnement technique\n\n### Décentralisé\n\nLorsqu'un utilisateur envoie un message, le client (l'application) va envoyer une requête au serveur de chaque destinataire qui a été détecté sur le réseau local. Les destinataires qui recevront la requête afficheront le message dans l'interface avec les informations reçues.\n\nCette méthode offre plusieurs avantages : aucun serveur central n'est nécessaire pour communiquer, il est possible de discuter à plusieurs sans aucune configuration supplémentaire, une connexion à Internet n'est même pas requise.\n\n### Sécurité\n\nLes messages sont envoyés \"en clair\" (sans HTTPS) sur le réseau local. Des personnes malveillantes (ou simplement l'administration d'un établissement scolaire par exemple) pourraient potentiellement intercepter les messages. Pour cela, le contenu du message (n'incluant ni le pseudo ni l'effet utilisé) est chiffré en utilisant l'algorithme AES-256-CBC avec une clé générée aléatoirement à chaque message.\n\nLa clé permettant le déchiffrement, ainsi que l'IV (vecteur d'initialisation) sont envoyés en clair avec le message. Cependant, une information est ajoutée à la clé au moment du chiffrement, et n'est pas envoyée dans la requête, celle-ci est basée sur le temps ainsi qu'une valeur prédéfinie dans le code.\n\nEn conclusion, les messages peuvent être lus par des inconnus sur le réseau, mais il sera plus difficile pour eux s'ils n'ont pas accès à ce code source.\n\n\n## Licence\n\nMIT © [Johan](https://johanstick.fr). [Soutenez ce projet](https://johanstick.fr/#donate) si vous souhaitez m'aider 💙  \nIcône faite par [Icones8](https://icones8.fr/icon/D6fq9I7xyv5X/chat-message).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohan-perso%2Flocalchat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohan-perso%2Flocalchat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohan-perso%2Flocalchat/lists"}