Files
PTT-Live/ELECTRON_SUMMARY.md
T
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

9.0 KiB
Raw Blame History

📋 Résumé - Application Desktop PTT Live

Ce qui a été créé

Structure Complète

electron/
├── package.json              # Config Electron + electron-builder
├── main.js                   # Main Process (333 lignes)
├── preload.js                # IPC bridge sécurisé (31 lignes)
├── .gitignore                # Git exclusions
│
├── ui/                       # Interface frontend
│   ├── index.html            # Structure UI (187 lignes)
│   ├── styles.css            # Dark theme (556 lignes)
│   ├── app.js                # Logic frontend (626 lignes)
│   └── qrcode.min.js         # Placeholder QR Code
│
└── Documentation
    ├── README.md             # Doc technique complète
    ├── QUICKSTART.md         # Guide démarrage rapide
    └── CHANGELOG.md          # Historique v0.3.0

Total : 1733 lignes de code (hors node_modules)


🎯 Fonctionnalités Implémentées

Core

  • Main Process spawn serveur Node.js automatiquement
  • IPC sécurisé (contextBridge + preload.js)
  • Démarrage/arrêt serveur avec feedback visuel
  • Détection statut serveur (polling)
  • Gestion logs temps réel (Main → Renderer)

Dashboard

  • Stats temps réel (uptime, utilisateurs, connexions, groupes)
  • Liste utilisateurs connectés avec détails
  • Génération QR Code automatique (détection IP réseau)
  • Bouton copier URL clients
  • Polling automatique toutes les 2 secondes

Configuration Audio

  • Auto-détection devices (input/output)
  • Sélection depuis dropdown
  • Sample rate configurable (44.1/48/96 kHz)
  • Bitrate par défaut (32-320 kbps)
  • Jitter buffer (20-100 ms)
  • Sauvegarde dans config.yaml via API

Gestion Groupes

  • Liste groupes existants
  • Création nouveau groupe (nom + bitrate)
  • Affichage infos groupe (ID, bitrate)
  • API admin /admin/groups CRUD

Monitoring

  • Logs serveur en temps réel
  • Buffer 500 logs max en mémoire
  • Filtrage par niveau (error/warn/info/debug)
  • Bouton effacer logs
  • Format : timestamp + niveau + message

Notifications

  • Toast visuelles (4 types : success/error/warning/info)
  • Auto-dismiss après 5 secondes
  • Bouton fermeture manuelle
  • Animation slide-in/out
  • Icônes par type (⚠️)

Packaging

  • electron-builder configuré
  • Build macOS (.dmg + .app)
  • Build Linux (.deb + .AppImage)
  • Scripts npm : build:mac / build:linux

🚧 À Implémenter (TODO)

Priorité Haute

  • WebSocket audio levels : /audio-levels pour VU-mètres temps réel
  • Icônes : icon.icns (macOS) + icon.png (Linux) + tray-icon.png
  • Tray icon : menu contextuel (start/stop/open/quit)

Priorité Moyenne

  • Graphiques monitoring : Chart.js pour latence/bande passante
  • Export logs : bouton télécharger CSV/JSON
  • Matrice routing : interface graphique drag & drop
  • Notifications desktop : Electron Notification API

Priorité Basse

  • Auth admin : mot de passe pour accès dashboard
  • Thème toggle : dark/light mode
  • Auto-update : electron-updater
  • I18n : français/anglais
  • Tests : Spectron ou Playwright

📦 API Admin Utilisées

L'application consomme toutes les routes existantes :

Endpoint Usage Statut
/admin/stats Dashboard metrics
/admin/users Liste utilisateurs
/admin/groups Liste groupes
POST /admin/groups Créer groupe
/admin/config Config complète
PUT /admin/config/audio Config audio
/admin/devices/list Auto-détection devices
POST /admin/audio/device Sélectionner device
/health Health check
WS /audio-levels VU-mètres (WebSocket) 🚧

🚀 Lancement

# Depuis la racine du projet
./start-desktop.sh

# OU depuis electron/
cd electron
npm start

# Mode développement (avec DevTools)
npm run dev

🏗️ Build Distribution

cd electron

# macOS
npm run build:mac
# → dist/PTT Live Server.dmg
# → dist/mac/PTT Live Server.app

# Linux
npm run build:linux
# → dist/PTT Live Server-0.3.0.deb
# → dist/PTT Live Server-0.3.0.AppImage

# Les deux
npm run build

🎨 Architecture Technique

Communication

┌─────────────────────────────────────────┐
│      MAIN PROCESS (Node.js)             │
│                                         │
│  • spawn server/index.js                │
│  • IPC handlers:                        │
│    - server:start()                     │
│    - server:stop()                      │
│    - server:status()                    │
│  • Forward logs → Renderer              │
│                                         │
└─────────────────────────────────────────┘
              ↕ IPC (contextBridge)
┌─────────────────────────────────────────┐
│    RENDERER PROCESS (Frontend)          │
│                                         │
│  • Fetch API REST :3000/admin/*         │
│  • Update UI (vanilla JS)               │
│  • Generate QR Code                     │
│  • Display notifications (toast)        │
│                                         │
└─────────────────────────────────────────┘
              ↕ HTTP
┌─────────────────────────────────────────┐
│    SERVEUR PTT LIVE (spawned)           │
│                                         │
│  • LiveKit Server (binaire Go)          │
│  • Audio Bridge Manager                 │
│  • API REST Express :3000               │
│  • WebSocket Audio Levels               │
│                                         │
└─────────────────────────────────────────┘

Sécurité

  • contextIsolation: true (isoler Node.js du renderer)
  • nodeIntegration: false (pas d'accès Node direct)
  • preload.js (whitelist API via contextBridge)
  • ⚠️ CSP manquant (à ajouter en prod)

📚 Documentation Créée

  1. electron/README.md (doc technique complète)

    • Architecture
    • API utilisées
    • Build & packaging
    • Debug
  2. electron/QUICKSTART.md (guide rapide)

    • Lancement en 30s
    • Checklist première utilisation
    • Problèmes courants
  3. electron/CHANGELOG.md (historique v0.3.0)

    • Fonctionnalités
    • Technique
    • TODO
  4. DESKTOP-APP.md (doc utilisateur complète)

    • Aperçu fonctionnalités
    • Guide utilisation
    • Build distribution
    • FAQ
  5. Mises à jour

    • README.md : section "Application Desktop"
    • CLAUDE.md : section "Application Desktop (v0.3.0)"

Checklist Validation

Fonctionnel

  • Application se lance sans erreur
  • Serveur démarre automatiquement
  • Dashboard affiche stats
  • Configuration devices fonctionne
  • Groupes CRUD opérationnel
  • Logs temps réel
  • Notifications toast

Code

  • Syntaxe JS valide (main.js, preload.js, app.js)
  • HTML valide
  • CSS sans erreur
  • eslint compatible (pas de lint errors)

Documentation

  • README technique complet
  • QUICKSTART guide rapide
  • CHANGELOG historique
  • DESKTOP-APP doc utilisateur
  • README principal mis à jour
  • CLAUDE.md mis à jour

Packaging

  • package.json configuré
  • electron-builder configuré
  • Scripts build:mac / build:linux
  • .gitignore créé

🎓 Points d'Apprentissage

Electron

  • Main Process vs Renderer Process
  • IPC sécurisé via contextBridge
  • spawn child_process pour serveur
  • electron-builder pour packaging

APIs

  • Réutilisation 100% API admin existante
  • Polling vs WebSocket (stats vs audio levels)
  • Détection IP réseau depuis serveur

Frontend

  • Vanilla JS (pas de framework pour légèreté)
  • Navigation SPA manuelle
  • Toast notifications custom
  • QR Code génération (lib CDN)

🏆 Résultat

Application desktop professionnelle complète pour gérer PTT Live :

  • Interface graphique intuitive
  • Toutes les fonctionnalités admin accessibles
  • Packagée pour distribution (macOS/Linux)
  • Documentation exhaustive

Prêt pour tests utilisateurs et itérations futures.


Développé avec Claude Code Date : 2026-06-19 Version : 0.3.0