How arkiv123/aevox-desktop works
AEVOX is a cross-platform video-conferencing app: a participant enters a name and room ID, chooses initial audio/video settings, joins a meeting, then communicates through live media and chat, with optional screen sharing. The sampled code shows React meeting coordination, browser WebRTC signaling, server-managed rooms, and an optional mediasoup SFU path. The README also claims end-to-end encryption and web support, but the sampled source does not establish how encryption is implemented or how those deployment modes differ.
Main entry points: server.js Socket server · MeetingRoom.jsx Meeting room · HomeScreen.jsx Join screen · useChat.js Room chat
Components 16
Meeting client
- Join screen
src/components/HomeScreen.jsx - App state
src/App.jsx - Meeting room
src/components/MeetingRoom.jsx - Room chat
src/hooks/useChat.js
Live media
- Local media
src/hooks/useLocalMedia.js - Screen sharing
src/hooks/useScreenShare.js - Peer connections
src/hooks/useWebRTC.js
Signaling backend
- Socket server
server.js - Room coordination
server.js - SFU media routing
src/server/sfu.js
Desktop capture
- Electron shell
main.js - Preload bridge
preload.js - Desktop capture
main.js
Other components
- Participant
- Camera and mic
- Other participants
Connections 22
- Participant → Join screen: enters details
- Join screen → Local media: previews media
- Join screen → App state: joins meeting
- App state → Meeting room: renders room
- Meeting room → Local media: controls media
- Local media → Camera and mic: captures tracks
- Meeting room → Screen sharing: controls sharing
- Screen sharing → Preload bridge: requests sources
- Preload bridge → Electron shell: invokes IPC
- Electron shell → Desktop capture: gets sources
- Desktop capture → Preload bridge: returns sources
- Meeting room → Peer connections: shares active stream
- Peer connections → Socket server: signals room peers
- Socket server → Peer connections: dispatches peer events
- Meeting room → Room chat: displays and sends
- Room chat → Socket server: sends chat events
- Socket server → Room chat: broadcasts messages
- Socket server → Room coordination: handles room events
- Room coordination → Other participants: notifies room peers
- Socket server → SFU media routing: creates and manages transports
- SFU media routing → Socket server: returns transport data
- Other participants → Socket server: joins by room ID