# 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 ```