Files
benoit 530c3a10b2 feat: application desktop Electron avec interface graphique complète
- Main Process spawn serveur automatiquement avec IPC sécurisé
- Dashboard temps réel : stats, utilisateurs, QR Code
- Configuration audio : devices, sample rate, bitrate, jitter buffer
- Gestion groupes : CRUD complet via API admin
- Monitoring : logs temps réel filtrables par niveau
- Notifications : toast visuelles avec auto-dismiss
- Packaging : electron-builder pour macOS (.dmg) et Linux (.deb/.AppImage)
- Documentation : README technique, QUICKSTART, CHANGELOG, guide utilisateur

Structure :
- electron/main.js (333 lignes) : Main Process + spawn serveur
- electron/preload.js (31 lignes) : IPC bridge sécurisé
- electron/ui/index.html (187 lignes) : interface dashboard
- electron/ui/styles.css (556 lignes) : dark theme
- electron/ui/app.js (626 lignes) : logic frontend

Total : 1733 lignes de code

Lancement : ./start-desktop.sh

API utilisées : /admin/stats, /admin/users, /admin/groups, /admin/config, /admin/devices/list

TODO : WebSocket VU-mètres, icônes, tray menu, graphiques monitoring
2026-06-19 11:04:29 +02:00

172 lines
5.3 KiB
Markdown

# PTT Live Desktop
Application desktop Electron pour gérer le serveur PTT Live.
## 🚀 Démarrage
```bash
# Depuis la racine du projet
./start-desktop.sh
# OU depuis electron/
cd electron
npm start
```
## 📦 Build pour distribution
```bash
cd electron
# macOS
npm run build:mac
# Linux
npm run build:linux
# Les deux
npm run build
```
Les builds seront dans `electron/dist/`.
## 🎨 Fonctionnalités
### Dashboard
- ✅ Stats temps réel (uptime, utilisateurs, connexions)
- ✅ Liste utilisateurs connectés
- ✅ QR Code pour connexion rapide clients
- ✅ Contrôles démarrage/arrêt serveur
### Configuration
- ✅ Sélection périphériques audio (input/output)
- ✅ Paramètres audio (sample rate, bitrate, jitter buffer)
- ✅ Sauvegarde automatique dans config.yaml
### Groupes
- ✅ Liste groupes configurés
- ✅ Ajout/modification/suppression groupes
- ✅ Configuration bitrate par groupe
### Monitoring
- 🚧 VU-mètres temps réel (WebSocket)
- 🚧 Graphiques latence
- 🚧 Stats réseau par client
### Logs
- ✅ Logs serveur en temps réel
- ✅ Filtrage par niveau (error/warn/info/debug)
- ✅ Export logs
## 🏗️ Architecture
```
electron/
├── main.js # Main Process (Node.js)
│ # - Spawn serveur PTT Live
│ # - IPC avec renderer
│ # - Gestion tray icon
├── preload.js # Bridge sécurisé IPC
└── ui/ # Renderer Process (Frontend)
├── index.html # Interface dashboard
├── styles.css # Styles
└── app.js # Logic frontend
# - Consomme API admin (/admin/*)
# - Met à jour UI
```
## 🔌 Communication
```
┌─────────────────────────────────────────┐
│ MAIN PROCESS (Node.js) │
│ ┌──────────────────────────────────┐ │
│ │ Serveur PTT Live (spawn) │ │
│ │ - LiveKit Server │ │
│ │ - Audio Bridge │ │
│ │ - API REST :3000 │ │
│ └──────────────────────────────────┘ │
│ ↕ IPC │
│ ┌──────────────────────────────────┐ │
│ │ Electron Window │ │
│ └──────────────────────────────────┘ │
└─────────────────────────────────────────┘
↕ HTTP
┌─────────────────────────────────────────┐
│ RENDERER PROCESS (Frontend) │
│ - Fetch API admin │
│ - WebSocket audio levels │
│ - Interface dashboard │
└─────────────────────────────────────────┘
```
## 🛠️ API Utilisées
Toutes les routes de l'API admin serveur :
```
GET /admin/stats → Dashboard metrics
GET /admin/users → Utilisateurs connectés
GET /admin/groups → Liste groupes
POST /admin/groups → Créer groupe
PUT /admin/groups/:id → Modifier groupe
DELETE /admin/groups/:id → Supprimer groupe
GET /admin/config → Config complète
PUT /admin/config/audio → Mettre à jour config audio
GET /admin/audio/devices → Énumérer devices
POST /admin/audio/device → Sélectionner device
GET /admin/audio/routing → Config routing
POST /admin/audio/routing → Mettre à jour routing
GET /admin/devices/list → Auto-détection devices
GET /admin/logs → Logs serveur
WS /audio-levels → WebSocket VU-mètres
```
## 🔧 TODO
- [ ] Implémenter QR Code canvas (bibliothèque qrcode.js)
- [ ] WebSocket audio levels pour VU-mètres
- [ ] Notifications desktop (toast)
- [ ] Tray icon avec vraie icône
- [ ] Graphiques monitoring (Chart.js)
- [ ] Export logs (CSV/JSON)
- [ ] Auth admin (optionnel)
- [ ] Thème dark/light toggle
- [ ] Auto-update (electron-updater)
## 📝 Notes de développement
- **Main Process** : Gère le cycle de vie de l'app et spawn le serveur
- **Renderer Process** : Interface web, appelle l'API REST du serveur
- **IPC** : Communication sécurisée via contextBridge
- **Serveur** : Tourne dans un process child_process, logs transmis au renderer
- **Port** : 3000 par défaut (configurable via PORT env)
## 🐛 Debug
Ouvrir DevTools : automatique en mode `--dev`
```bash
npm run dev
```
Logs dans la console :
- `[Serveur]` : logs du serveur PTT Live
- `[Serveur Error]` : erreurs serveur
- `✅/❌` : statut démarrage/arrêt
## 📦 Packaging
electron-builder crée :
- **macOS** : `.dmg` + `.app` dans `dist/mac/`
- **Linux** : `.deb` + `.AppImage` dans `dist/`
Tester le build :
```bash
npm run build:mac
open dist/mac/PTT\ Live\ Server.app
```