Video conferencing platform — call surface
An MVP already existed; the new design meant starting over. Rebuilt the whole call experience from zero — camera, mic, and screen share live in the browser over WebRTC, with host controls and real-time chat running alongside.
Front-End Engineer
Vue 2 · WebRTC · WebSockets
Open · Hosted
Full rebuild from MVP
The call surface
Safari-specific backlog
Build notes
Two modes, one call model
Open calls let everyone share camera and screen; hosted calls restrict that to the creator — same underlying call state, different permission gates.
Admission, not just muting
New participants wait in a lobby until the host admits them. The host can mute or remove anyone mid-call, no re-join required.
Chat beside the call, not inside it
Messages ran over a separate WebSocket connection alongside the WebRTC media stream, so chat kept working even under bad video conditions.
Chromium was not the baseline
WebRTC behaves differently on Safari — from getUserMedia constraints to ICE ordering. Most of the post-launch backlog was tracking down and working around exactly where.