{"id":13598677,"url":"https://github.com/ananyalohani/teams","last_synced_at":"2025-04-10T09:31:57.276Z","repository":{"id":107607333,"uuid":"384333860","full_name":"ananyalohani/teams","owner":"ananyalohani","description":"Teams is a web app implementation of Microsoft Teams. The project of Microsoft Engage 2021.","archived":false,"fork":false,"pushed_at":"2021-07-18T05:05:07.000Z","size":7031,"stargazers_count":55,"open_issues_count":0,"forks_count":6,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-11-06T23:40:18.405Z","etag":null,"topics":["microsoft-engage","microsoft-teams","nextjs","socketio","tailwindcss","teams","twilio-video"],"latest_commit_sha":null,"homepage":"https://msft.lohani.dev/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ananyalohani.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2021-07-09T05:43:36.000Z","updated_at":"2024-11-02T15:31:42.000Z","dependencies_parsed_at":"2023-06-08T14:30:21.705Z","dependency_job_id":null,"html_url":"https://github.com/ananyalohani/teams","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananyalohani%2Fteams","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananyalohani%2Fteams/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananyalohani%2Fteams/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ananyalohani%2Fteams/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ananyalohani","download_url":"https://codeload.github.com/ananyalohani/teams/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248191759,"owners_count":21062565,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["microsoft-engage","microsoft-teams","nextjs","socketio","tailwindcss","teams","twilio-video"],"created_at":"2024-08-01T17:00:54.911Z","updated_at":"2025-04-10T09:31:52.260Z","avatar_url":"https://github.com/ananyalohani.png","language":"JavaScript","funding_links":[],"categories":["JavaScript"],"sub_categories":[],"readme":"# Teams\n\n[**Teams**](https://msft.lohani.dev) is a web app implementation of Microsoft Teams, the video conferencing and collaboration platform by **Microsoft**.\n\n![Teams](public/images/homepage-screenshot.png)\n\n## Features\n\n1. **Mandatory Feature:** Two-person video call\n\n2. **Surprise Feature:** Chat during, before and after a call\n\n3. **Additional Features:**\n   - Call capacity of 25\n   - Authentication\n   - Screen Share\n   - Background Filters (Virtual and Blur) [Only for Chromium-based browsers]\n   - Monitoring Network Quality\n   - Rooms\n   - Named Rooms\n   - Toggle user audio\n   - Toggle user video\n   - Send email invites to users\n   - Display list of participants in a call\n   - Raise hand\n   - Toast notifications\n   - Clear chat history\n   - Display list of user's recent meetings\n   - Fully responsive web app\n\n## Technologies Used\n\n![tech_stack](public/images/tech_stack.png)\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\nExpand\n\u003c/summary\u003e\n\n#### Frontend\n\n- React\n- Next.js\n- Tailwind CSS\n\n#### Video Call and Chat\n\n- Twilio Programmable Video\n- Socket.io\n\n#### Backend\n\n- NodeJS\n- Express\n\n#### Database\n\n- MongoDB\n- Mongoose\n\n#### Other Libraries\n\n- NextAuth.js\n- SendGrid\n- Twilio Network Quality API\n- Twilio Video Processors API\n\n\u003c/details\u003e\n\n## Architecture\n\nThe 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.\n\n![architecture](public/images/architecture.png)\n\n## Agile Techniques Used\n\n#### Kanban Board\n\nI used a [Kanban board](https://github.com/users/ananyalohani/projects/2) 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.\n\nThe 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.\n\n## API Reference\n\nThe network quality of participants in a call can be analysed using Twilio's Network Quality API.\n\n#### Get network quality info for users in a room\n\n```http\nGET /api/network-quality?roomId=${roomId}\n```\n\n| Parameter | Type     | Description                                                |\n| :-------- | :------- | :--------------------------------------------------------- |\n| `roomId`  | `string` | **Required**. RoomId for which you want to see the details |\n\n## Development\n\nTo run this project locally do the following:\n\n```bash\n  # clone this repository and the server submodule\n  git clone --recurse-submodules https://github.com/ananyalohani/teams.git\n  cd teams\n\n  # if you don't have pnpm installed\n  npm i -g pnpm\n\n  # install dependencies\n  pnpm i\n  pnpm postinstall\n```\n\nMake 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](.env.example) and [server/.env.example](server/.env.example) for the required environment variables.\n\n```bash\n# client runs on port 3000\npnpm client\n\n# server runs on port 5100\npnpm server\n```\n\nGo to http://localhost:3000 on your browser.\n\n## Demo\n\n- [**Fully Functional Prototype**](https://msft.lohani.dev)\n- [**Video Demo**](https://youtu.be/qoQxXQ06DRE)\n- [**Presentation**](https://teams-ppt.vercel.app)\n\n## Credits\n\n- [GitHub Webhook Script Runner](https://github.com/plibither8/github-hook-script-runner) (Thanks [@plibither8](https://github.com/plibither8/)!)\n- Segoe UI font by Microsoft\n- Flat Icons\n- Undraw Illustrations\n- React Icons\n\n## Author\n\n**Ananya Lohani**\n\n- Website: [lohani.dev](https://lohani.dev/)\n- GitHub: [@ananyalohani](https://github.com/ananyalohani/)\n- Email: [ananya@lohani.dev](mailto:ananya@lohani.dev)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananyalohani%2Fteams","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fananyalohani%2Fteams","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fananyalohani%2Fteams/lists"}