Due to covid everything has shifted online , from classes, work meetings, social hangout, to doctors visits, concerts and basically all daily activities. Hence virtual video conferencing softwares have came very handy. There are soo many applications to do online calling, trying to bring people closer. But one major problem all of them face is the engagement level. Even though we can communicate face to face, but the problems arises in group setting. Few weeks back I attended a virtual birthday of my friend and there were 35 people on call and i just knew personally about 10 of them.So just to ask how they were, I had to wait for my turn to speak and it got very annoying when i had to hear other 2 people talk and share updates about their life, when I did not even know them. Then I realised I can just chat personally to my friend or use breakout room but it was a lot of work and hence I lost the engagement. I was unable to make small talk and socialize. Hence I realized no other application have that feature. People become at one point unengaged on video calls and it is no longer similar to physical setting. Hence this problem need to be rethought. In coming years, virtual call will be a bigger means of communication , when people start going to space more , etc..
What it does
Our application is trying to redefine how virtual interactions happen. We want the people on the call to be more engaged and enable them to ping people and make small talks within the main conference room. Currently the layout is very intuitive and similar to zoom like conference apps but with added functionality of instant ping. So when all the users, lets say 6 people, are in the conference call, and person 4 is talking. At this point person 2 wants to say something really quickly to person 3. Using our Ping app, he/she can ping the person3 directly while still being part of the main conference room. So when person 2 and person 3 are on ping call, no one in the main conference room can hear or see them but person 2 and 3 can hear and see each other and also on the background they can see everyone else and have low volume (20% as default) from the main conference call. This ping call can be made open and hence other users can request to join this call. But we have a lot of features plan for or next release, both from ui/ux side and backend architecture.
How we built it
The first challenge was trying to solidify our understanding of exactly what we wanted to accomplish (i.e. the user stories). Trying to understand the video streaming connections and how important performance is in video streaming took the most time. It was mostly us searching for background information, before settling at some promising tutorial videos/articles to follow. We even went through Jitsi open source code, but it was too adavnced for our level right now. We used the PeerJS package, which helps with managing webRTC, however for our specific application, it was a struggle to customize the peer connections the way we wanted them to for Ping calls. None of us have dealt with webRTC tech nor video live streaming. Most of us have no experience in front-end, either. We tried working with Firebase for hosting as well, which required an in-depth exploration into Google Cloud but we ended up hosting on Heroku.
Learned a great deal about webRTC through PeerJS. Set up connections through PeerJS and using a PeerJS server. We were also successuful to have a working demo of basic ping feature which is really important to support if our idea is technically possible or not. Also, we were always thinking of scalable design and architecture, which is really important for sleek design.
Finding ways to optimize multiple video streams in a single room. We have unfinished pages that we will finish to welcome the user to our application and provide a positive outlook for the app. We are trying to rethink the meaning of virtual conference app and present users with a completely new experience. Having multiple speaker and ping is just one feature. As said before, we are trying to bridge all the gaps between physical and virtual conversations to make the virtual calling experience more seamless and engaging. We are currently using a mesh, where each user is connected to all other users in a separate connection. We plan to try out a client-server. We also plan to use React (and react redux) to better organize our data passing more optimally. Lastly, we hope to complete the web browser version so that we can ship out a software that would also work for mobile.