Table of Contents
This project is a part of Microsoft Engage Mentorship Program 2021. It was a 4 week program organized by Microsoft India Team. The task was to build a Microsoft Teams Clone with at least one mandatory functionality, that is, a minimum of two participants should be able connect with each other to have a video conversation. Throughout this project, my fellow mentees and I had constant support from the mentors(Ms. Salona Sinha and Mr. Nikhil Arora). Also, various AMA Sessions, Webinars and Leader talks were organized by Microsoft and Team Ace Hacker during this period. Microsoft Engage 2021 Website
- Group Video Calling
- Unlimited participants support
- Video On/Off Feature during call
- Audio Mute/Unmute Feature during call
- Access to chat during call
- Chat associated with every meeting
- Chat before or after the meeting
- Add new participants
- All the participants(including newly added) will have access to the old chats
- Option to join the call
- Navigation Bars on side and top showing options to join other meets
- Authentication and Authorization
- Only authenticated users have access to create and join meetings
- Only the users allowed can join a specific meeting
- Login on multiple devices allowed
- Users can join multiple meetings and chats at the same time from same or multiple devices
- Completely a web-based Application: No need to install any application locally.
This project is built using Agile Methodology. Agile scrum methodology is a project management system that relies on incremental development. Usually, each iteration consists of 2-4 week sprints, where each sprint's goal is to build the most important features first and come out with a potentially deliverable product. More features are built into the product in subsequent sprints and are adjusted based on stakeholder and customer feedback between sprints. Microsoft divided the project into 3 sprints: Design, Build & Adapt . Since this was a small project, so after the design phase I further divided the project into 2-3 days sprints. They are:
- [Initialization] Setting up the server (locally)
- [Minimum Functionality] Enabling the connection (videos/audios) between two tabs on the same device
- Adding the in-call chat feature
- Adding User Authentication and basic Authorization
- Adding Join Meeting feature and Create Meeting feature
- Adding basic Error Handling
- Deploying the App
- Giving basic User Interface
- Adding Private Meeting feature
- Adding Add Participants Feature
- [Adapt Stage] Integrating the before and after meeting chat option with already built chat feature
- Adding/improving styling in the app
Anyone can register to the App giving their basic details such as:
- Firstname and Secondname (Both must have atleast 3 characters)
- Username (Must be unique)
- Password
- Email Id (Must be unique and in the correct syntax)
For logging in, the registered username and password must be used
Anyone who is logged in can create a new meeting by entering the details:
- Meeting Name
- Meeting Id : This field can also be left empty for auto-generation of id
- Participants List (includes Email Ids of the Participants with each id sepereted by a space)
On the meeting page, list of all other meetings is on the left. On the right side, going from top to bottom the option of joining the video call, list of participants and option of adding new participants to the meeting are given.
User can also join a meeting by entering the Meeting Code
- CSS
- JavaScript
- NodeJS
- MongodDB/Mongoose
- ExpressJS
- Ejs
- Socket.io
- WebRTC
- PeerJS
- uuid
- PassportJS
- Express Flash.
- Express Session
- dotenv
The app is deployed using Heroku at https://true-mountie-86521.herokuapp.com/ .
- If you are not able to join a meeting, make sure that you have been added to the Allowed Participants list of that meeting. Ask someone in the meeting to add you using the option provided.
- While registering, enter the details in correct format as mentioned here
- In case you are providing custom meeting id, the meeting id must be unique.
- If you are facing any issue in loading/working of a particular feature, try refreashing the website. If the problem persist try changing the browser/device.
Report issues: https://github.com/chetanshahra/Microsoft-Teams-Clone/issues