CloseChat est une application de chat en réseau local pensée pour les petits groupes — entre amis, en classe, en LAN party. Pas de compte obligatoire, pas d'internet, pas d'algorithme : juste vous et les gens autour de vous.
- 💬 Chat temps réel via WebSocket sur le réseau local (port 5050)
- 🔍 Découverte automatique des salons disponibles sur le /24
- 🔐 Authentification JWT RS256 — avec compte (API) ou sans (token local)
- 👤 Profils personnalisés — avatar emoji, statut, bio — synchronisés en temps réel
- ⚙️ Panel d'administration — renommer le salon, exclure ou bannir des membres
- 🔔 Notifications push natives (si l'app n'est pas au premier plan)
- 📥 System tray — l'app reste accessible depuis la zone de notification
- 🚀 Démarrage automatique au login système
- 💾 Export de conversation en
.txtvia dialog natif - 🐛 Crash reporter — collecte automatique des erreurs (main + renderer + backend)
| Accueil | Connexion | Chat |
|---|---|---|
![]() |
![]() |
![]() |
| Découverte | Profil | Administration |
|---|---|---|
![]() |
![]() |
![]() |
| Couche | Technologie |
|---|---|
| Desktop | Electron 41, React 19, MUI v6, Vite, TypeScript |
| Temps réel | WebSocket (ws) — port 5050 |
| Backend | Node.js, Express, PostgreSQL 16 |
| Auth | JWT RS256, bcrypt (cost 12) |
| Infra | Docker Compose, electron-builder |
git clone https://github.com/Inkflow59/CloseChat.git
cd CloseChatdocker-compose up --build -dL'API sera disponible sur http://localhost:6767.
La base de données est initialisée automatiquement depuis db/db.sql.
Comptes de test :
Alice/Bob— mot de passe :test1234
cd desktop
npm install
npm run devL'app Electron s'ouvre automatiquement. En mode hors ligne (sans Docker), le login génère un token local.
cd desktop
npm run build:iconsnpm run distProduit dans desktop/dist/installer/ :
CloseChat Setup 1.0.0.exe— installeur NSISCloseChat-1.0.0-win.zip— archive portable (Scoop)
scoop bucket add inkflow https://github.com/Inkflow59/scoop-bucket
scoop install inkflow/closechatCloseChat/
├── api/ # Backend Express (auth, profils, crash reporter)
│ └── src/
│ ├── app.js
│ ├── authRoutes.js
│ ├── profileRoutes.js
│ └── crashRoutes.js
├── db/
│ └── db.sql # Schéma PostgreSQL + données de test
├── desktop/
│ ├── src/
│ │ ├── main/
│ │ │ ├── electron.js # Process principal (IPC, WS, tray, OS)
│ │ │ └── preload.js # Bridge contextBridge → renderer
│ │ └── renderer/src/
│ │ ├── pages/ # 8 écrans (Home, Login, Chat, …)
│ │ └── components/ # AccountPanel, AdminPanel, …
│ └── resources/ # Icônes (PNG, ICO)
├── presentation/ # Slides Slidev
├── scoop/
│ └── closechat.json # Manifest Scoop
└── docker-compose.yml
Au premier lancement, l'app génère automatiquement une paire de clés RSA dans %APPDATA%/CloseChat/secrets/ (production) ou secrets/ (développement). Ces fichiers sont exclus du dépôt (.gitignore).
La présentation du projet est disponible dans presentation/ (Slidev).
cd presentation
npm install
npm run dev # http://localhost:3030ISC © Inkflow59





