Vieu is a video chat application made using React powered by webRTC, and uses socket.io as the signaling server on the backend.
Webrtc natively supports peer-to-peer connection, and to accommodate a chat room experience , i've used a mesh architecture.
This type of architecture is not at all scalable, but since this project was made just for experimental purposes i've used this here , although for better scalability and performance a Selective Forwarding Unit or Multipoint Conferencing Unit can be considered, for more info check here.
The global state of the application is managed using Redux.