Teams is a web app implementation of Microsoft Teams. The project of Microsoft Engage 2021.

Overview

Teams

Teams is a web app implementation of Microsoft Teams, the video conferencing and collaboration platform by Microsoft.

Teams

Features

  1. Mandatory Feature: Two-person video call

  2. Surprise Feature: Chat during, before and after a call

  3. Additional Features:

    • Call capacity of 25
    • Authentication
    • Screen Share
    • Background Filters (Virtual and Blur) [Only for Chromium-based browsers]
    • Monitoring Network Quality
    • Rooms
    • Named Rooms
    • Toggle user audio
    • Toggle user video
    • Send email invites to users
    • Display list of participants in a call
    • Raise hand
    • Toast notifications
    • Clear chat history
    • Display list of user's recent meetings
    • Fully responsive web app

Technologies Used

tech_stack

Expand

Frontend

  • React
  • Next.js
  • Tailwind CSS

Video Call and Chat

  • Twilio Programmable Video
  • Socket.io

Backend

  • NodeJS
  • Express

Database

  • MongoDB
  • Mongoose

Other Libraries

  • NextAuth.js
  • SendGrid
  • Twilio Network Quality API
  • Twilio Video Processors API

Architecture

The client, Socket API and MongoDB database are hosted on a DigitalOcean VPS and available on my domain by reverse proxying the HTTP requests with Nginx.

architecture

Agile Techniques Used

Kanban Board

I used a Kanban board to organise my tasks by dividing them into 4 categories: To do, In Progress, Done and Bugs. I also set an In progress limit of 3, meaning if the In Progress column had 3 tasks, I had to finish them before I move on to start new tasks.

The development of this project was iterative: Design, Code, Redesign, Fix Bugs. I preferred a Kanban board over a Scrum board since I was working a little on each phase throughout the four weeks, and I didn’t see fit to add start and end dates on the sprints.

API Reference

The network quality of participants in a call can be analysed using Twilio's Network Quality API.

Get network quality info for users in a room

GET /api/network-quality?roomId=${roomId}
Parameter Type Description
roomId string Required. RoomId for which you want to see the details

Development

To run this project locally do the following:

  # clone this repository and the server submodule
  git clone --recurse-submodules https://github.com/ananyalohani/teams.git
  cd teams

  # if you don't have pnpm installed
  npm i -g pnpm

  # install dependencies
  pnpm i
  pnpm postinstall

Make sure that all the environment variables are correctly defined in .env and server/.env file before proceeding to the next step. Refer to .env.example and server/.env.example for the required environment variables.

# client runs on port 3000
pnpm client

# server runs on port 5100
pnpm server

Go to http://localhost:3000 on your browser.

Demo

Credits

Author

Ananya Lohani

You might also like...

A community driven project to make a game like phigros.

A community driven project to make a game like phigros.

Dec 28, 2022

Front-end capstone project that takes information from an API and displays it in an e-commerce format.

FEC-Atelier Overview Front-end capstone project that takes information from an API and displays it in an e-commerce format. The application is compose

Aug 24, 2022

Translation tool for Stoneclane Development's Giveaways project.

GiveAways | Translation I want to add translation to the site! Congratulations, you want to translate with us? then choose a language and pull request

Jun 10, 2022

A Discord bot project made with the npm package discord.js version 14

A Discord bot project made with the npm package discord.js version 14

A Discord bot project made with the npm package discord.js version 14 and it's job to manage mails on a server, and this project includes only one Database: Quick.db. This project also handles Slash commands.

Jan 6, 2023

This bot can raise your mood. This bot send joke often our channel for users. Sometimes bot don't work because we have not server for this project...)

This bot can raise your mood. This bot send joke often our channel for users. Sometimes bot don't work because we have not server for this project...)

Hi, welcome to send-joke-bot telegram bot project 🤖 What can do this bot ? This bot can raise your mood. This bot send joke often our channel for use

Sep 26, 2022

Small project to download Youtube playlists.

yt-playlist-mp3 ⚠ You must use this module respecting the YouTube's Copyright Policies. Requirements Installation Usage Install Requirements Node.js

Sep 29, 2022

Youtube App without ADs

youtube-webos Youtube App without ADs Pre-requisites (Optionally) Install webOS SDK - https://webostv.developer.lge.com/sdk/installation/ Setup webOS

Jan 2, 2023

Twitch-webos - Trying to be a better TwitchTV-App

twitch-webos This should be a better TwitchTV-App without lagging of features like VODs. Credits Skeleton from https://github.com/webosbrew/youtube-we

Mar 24, 2022

This is a YouTube Video Planner app built with NextJS, GraphQL, Prisma and MongoDB for the MongoDB Atlas Hackathon

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

Jan 14, 2022
Owner
Ananya Lohani
cse undergrad @IIIT-Delhi
Ananya Lohani
YouTube Playlist Downloader ▶. It is powered by loader.to with Selenium 4 and Microsoft Edge.

YouTube Playlist Downloader ▶. It is powered by loader.to with Selenium 4 and Microsoft Edge.

Alfian Andi Nugraha 7 Mar 4, 2022
This project was created to help discord.js developers start their own bot, you can take this project as a basic for your bot and add things to it as you want. 🙂

Discord.js Starter-Bot A small & basic discord.js bot to help you get started ??️ This project was created to help discord.js developers start their o

Strike 3 Nov 29, 2022
SpotLight is a web app which uses spotify developer APIs and lists your most listened songs, albums, artists and genres.

SpotLight is a web app which uses spotify developer APIs and lists your most listened songs, albums, artists and genres.

Sahil Saha 9 Dec 31, 2022
A web app for seeing your recent Twitch chat mentions and/or other tracked words amongst channels you follow.

Mentions A web app for seeing your recent Twitch chat mentions and/or other tracked words amongst channels you follow. Requirements NodeJS. Client ID

Ravenbtw 3 Dec 22, 2022
Bookwise is a video library web app that consists of a collection of Videos

Bookwise is a video library web app that consists of a collection of Videos. It has features such as like videos, creating playlists, adding videos to playlists, adding to watch later, history, feed, etc. but of a specific niche.

Rutvik Umak 18 Jun 13, 2022
AmplitudeJS: Open Source HTML5 Web Audio Library. Design your web audio player, the way you want. No dependencies required.

Documentation • Examples • Tutorials • Support Us • Get Professional Help AmplitudeJS is a lightweight JavaScript library that allows you to control t

Server Side Up 3.9k Jan 2, 2023
A review aggregator web application that allows users to review albums by leveraging the Spotify Web API.

Reviewify Summary Reviewify is a review aggregator platform that leverages the Spotify Web API. It allows users to: Login with their Spotify accounts

Abhi Ardeshana 3 Oct 7, 2022
A bot builder on top of puppeteer's headless web browser mimicing your web.whatsapp.com functionalities.

Welcome to the BizBook365 WhatsApp bot project A bot builder on top of puppeteer's headless web browser mimicing your web.whatsapp.com functionalities

Foyzul Karim 19 Dec 1, 2022
A simple and easy-to-use WhatsApp bot project based on Multi-Device Baileys and written in JavaScript

MIZUHARA ANIME THEMED FULL FLEDGED MULTI DEVICE WHATSAPP BOT WITH COOL FEATURES A Full Fledged MD Bot For Bot Lovers REQUIREMENTS • HOW TO INSTALL? •

Arus~Bots 18 Oct 25, 2022
A community driven project to make a game like phigros.

这是什么? 这是一款名为PhiCommunity的节奏游戏,它仿照Phigros制作。 APP已发布(测试版本) 请前往Actions - PhiCommunityAPP的最新构建下载Artifact,此构建为Debug构建,仅用于测试。 您也可以前往Releases - PhiCommunityA

Yuameshi 105 Jan 2, 2023