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
This commit is contained in:
2026-06-19 11:04:29 +02:00
parent 312d47d677
commit 530c3a10b2
16 changed files with 3072 additions and 1 deletions
+31
View File
@@ -0,0 +1,31 @@
/**
* PTT Live Desktop - Preload Script
* Bridge sécurisé entre Main Process et Renderer Process
*/
const { contextBridge, ipcRenderer } = require('electron');
// Exposer l'API au renderer de manière sécurisée
contextBridge.exposeInMainWorld('electronAPI', {
// Contrôle serveur
server: {
start: () => ipcRenderer.invoke('server:start'),
stop: () => ipcRenderer.invoke('server:stop'),
status: () => ipcRenderer.invoke('server:status'),
ping: () => ipcRenderer.invoke('server:ping'),
// Écouter les événements du serveur
onStatus: (callback) => {
ipcRenderer.on('server:status', (event, data) => callback(data));
},
onLog: (callback) => {
ipcRenderer.on('server:log', (event, data) => callback(data));
}
},
// Helpers
platform: process.platform,
version: process.env.npm_package_version || '0.3.0'
});
console.log('✅ Preload script chargé');