Skip to main content
Mira Connect call messages on desktop.

Mira Connect

Making connections more seamless and productive for field operators and office experts

  • WebRTC
  • RabbitMQ
  • React
  • Websockets

The problem

As one of the core products of Mira we wanted to revamp the video chat platform to enable clients to be more productive while providing a more stable environment to facilitate headset operators in the field. In the previous version of the video platform only two people could be in a call. To enable our clients to more effectively help headset and mobile operators in the field we updated to a multiparty call structure while adding more features such as invites, guest calls, and meeting reports.

Mira Connect pre call lobby on desktop.
Mira Connect call guest requests list on desktop.

Architecture

The team spent a good amount of time determining how to architect the app, given it was the next major version of a core product. In order to facilitate larger calls using a provider for the turn/stun and media servers was the most optimal path for a good UX. Another key element was revamping the UI to work in a multi-call fashion adopting a UI similar to Google meets with an industrial aesthetic. Lastly communication between clients that were not facilitated by the provider such as annotations, messages, and availability. We initially used polling websockets on the client, who would send their status every few seconds and update a Redis store. During development we switched to a more robust messaging tool with RabbitMQ and MQTT to have message reliability and faster communication.

Mira Connect call annotations viewer on desktop.

Development

Focusing on the web client, initial UI work was done with Storybook to build the components in isolation and quickly iterate upon shifting designs. On the state/data management side I built a new module to interface with our 3rd party provider of webRTC call services using MobX State Tree. In addition I created modules for our internal services such as ringing and joining/leaving a room along with post meeting reports. After the initial alpha release we realized our message transport was unreliable with websockets. We pivoted to integrating a message broker using RabbitMQ which greatly helped reliability. After we continued to integrate new features such as call links and invites exposing meetings to external guests and organizations.

Mira Connect call History viewer on desktop.

Learnings

Leading a project as an sole contributor was much simpler than leading a team, in this case contracted developers based in Romania. Having to traverse the time difference and delineate work at times was challenging but overall a rewarding experience. Was also the 1st project where I led the architecture discussions creating initial PRDs for the web, sequence and flow diagrams, and more. This taught me more about network protocols and how they transfer data in different manners along with complex state management. Lastly cross team collaboration from the headset, web and api is not always easy and being transparent when making changes that may effect another is the best way to avoid friction.

Page 1 of Mira Connect call report
Page 2 of Mira Connect call report