Thanks to Kunal Chandratre for this photo! I was lucky to capture this candid moment when Kunal was on a video call with his kid.
From wired telephones, where we had to tell the number to the operator to connect us, to mobile phones, where we ask Siri or Ok Google to connect us, we have come a long way!
The quality of the phone call has changed a lot, too, from audio-only to video and plugin-enabled calls. Remember the “background blur”?
Let’s build an app that will allow us to connect with our dear ones on video calls. And integrate some cool features. From scratch!
Post-pandemic, video calling usage skyrocketed as video calls have provided us many opportunities. Think about students attending online classes, patients consulting online with doctors, executives giving presentations to customer leads, instructors taking online gym sessions – everything through video calls.
There are already a couple of solutions for video calling. However, there are challenges worth noticing.
Need to install 3rd party solutions
Some solutions allow users to download an executable to join the meeting. However, with this approach, the user has to leave the context and join the meeting.
Lack of branding and identity for the host
Think about hospitals providing online consulting services. I’m sure those hospitals would want to keep their brand identity, like logo, color scheme, and aesthetics, which will make patients feel comfortable sharing vital information.
No granular control over calls
In the same hospital example, doctors may want to record the call and make it mandatory that only 1 patient is available at a specific time slot in the meeting, and there shouldn’t be a chat option. There are various permutations and combinations of permissions depending on roles.
Data Storage & Compliance
When it comes to hospitals, patient data needs to be kept secure, and in some countries, the law of the land requires that data be stored within the country.
I’m sure many other industries like EdTech, E-Commerce, Tele Health, and Communication would have requirements around these challenges.
Dyte is an SDK that allows embedding video calls into our existing apps or building apps around them. The user doesn’t need to download anything or leave the leading app for video calling functionality when integrated. Similarly, as the video call is embedded into the app, the app gets to keep the branding and identity. With Presets, Dyte provides a way to control every video call feature, e.g., screen sharing, muting, kicking out participants, recording, etc. And last but not least, Dyte is just video SDK. Authentication, data, and logs are on to the developer to store and manage. So, data storage and compliance requirements are straight forwards.
I thought about building an end-to-end video calling app from scratch using various technologies, and here it is.
With frequently asked questions from the community and my personal requirements, I thought about building ‘Hosted Meetings.’ I am considering the following bare minimum requirements for this product:
- A web app that can run on desktop, laptop, and mobile devices.
- It should be protected with Google/Microsoft-like authentication mechanisms. Perhaps provide the additional 2FA/MFA layer.
- Users should be able to create meetings, invite other users and join meetings. These users can join from any device.
- Meetings will be recorded, & past recordings will be shared with attendees. Users should be able to browse through recordings.
- The user should be able to track attendance on the call.
Building such an app from scratch would be a herculean task for a one-person team. So, I will break this into the following pieces and work on it over the next few weekends. If you feel something needs to be covered here, do let me know in the comments.
- The Architecture
- Understanding Dyte REST APIs
- Backend Project
- Frontend Project
- Authentication Mechanism
- Meeting Services
- Recording Infrastructure
- Final Deployment
At the end of the series, people should be able to pick the source code and build and deploy the solution for themselves. We’ll cover different deployment options.
I’m going to share the entire source code and sample here on GitHub: https://github.com/mayur-tendulkar/hosted-meetings
So, let’s get started!
Happy coding :)