# Microsoft Teams Clone by [Karanjot Singh](https://github.com/Karanjot-singh/)
## About
Microsoft Teams Clone is a Video conference application with a rich integrated chat experience, to connect with friends,family & colleagues.
Developed as a redesign of Microsoft Teams during my menteeship at [Microsoft Engage 2021](https://microsoft.acehacker.com/engage2021/index.html),
It implements the following features of the original app
* [Instant Messaging](https://www.microsoft.com/en-in/microsoft-teams/instant-messaging)
Share your opinion and have fun with your team. Send GIFs, stickers, and emojis in a group chat or in one-to-one messages.
* [Online Meetings](https://www.microsoft.com/en-in/microsoft-teams/online-meetings)
Instantly go from group chat to video conference with the touch of a button.
* [Collaborate](https://www.microsoft.com/en-in/microsoft-teams/online-meetings)
Easily find, share files in real time, in chat to keep the work on :)
This application is written using Flutter & Dart, It leverages Gradle and AndroidX and utilises StreamChat SDK, Google Firebase and Jisi Meet Android SDK.
## Contents
- [Download](#download)
- [Features](#features)
- [Development](#development)
* [Project Setup](#project-setup)
* [Coding Style & Conventions](#coding-style)
* [Overview of the codebase](#overview-of-the-codebase)
* [Contributing](#contributing)
- [Implementation](#implementation)
* [Technologies Used](#technologies-used)
* [Agile Methodologies](#agile-methodologies)
* [App Permissions](#app-permissions)
- [Demo & Screenshots](#demo)
- [Wiki](#wiki)
- [Project References](#project-references)
- [License](#license)
- [Connect with me](#connect-with-me)
## Download
**Android 6.0 and above only**
### FAT APK Bundle
- [Download](https://drive.google.com/drive/folders/1HlLm0pWeH9ETQ5cIsXBsXDIgd5tPvsrT?usp=sharing)
### Architecture Specific APKs
- [Download](https://drive.google.com/drive/folders/1zr3_bMxjsstKzExge0ti6x29zryIYrDE?usp=sharing)
**Please refer to the [Guide](https://flutter.dev/docs/deployment/android#building-the-app-for-release) here to know the difference.**
## Features
**Chat Functionality**
* Google Sign In
* **Upto 2000 Active users at same time**
* Create Group / personal chats outside a meeting
* Pin messages.
* Delete / edit messages.
* Photo, Audio, Videos, etc.
* GIFs via GIPHY
* Chat reactions & Emojis.
* Reply on threads.
* Integrated Video rooms.
* User mentions.
* Mute Conversations
**Video Conferencing Functionality**
* Toggle Video / Audio
* Share Screen
* Anonymous Join In
* Raise Hand
* Set Meeting Password
* Share files
* In meet private chat
* Record the meeting
* Share Links
* Broadcast Live
* Low Bandwidth mode
* Minimised mode
**UI / UX**
* Onboarding Screens
* Fully Responsive UI
* Minimalist UI
* Dark / Light Theme
**Complete [Feature List](https://github.com/Karanjot-singh/microsoft_teams_clone/blob/main/docs/Features%20%26%20Screenshots.pdf)**
## Development
### Project Setup
* Please refer to the [Project setup wiki page](https://github.com/Karanjot-singh/microsoft_teams_clone/wiki#project-setup) for full instructions.
### Coding Style
* Please refer to the [Coding style wiki page](https://github.com/Karanjot-singh/microsoft_teams_clone/wiki#coding-style--conventions) for full instructions.
### Overview of the codebase

* For more please refer to the [Codebase overview wiki page](https://github.com/Karanjot-singh/microsoft_teams_clone/wiki/Codebase-Overview) for detailed explanation.
### Contributing
* Please refer to the [Contributor wiki page](https://github.com/Karanjot-singh/microsoft_teams_clone/wiki/Contribute) for steps.
## Implementation
### Technologies Used
- [Flutter](https://flutter.dev/) null safe 2.2.2
- Google Firebase for user authentication
- [firebase_core](https://pub.dev/packages/firebase_core)
- [firebase_auth](https://pub.dev/packages/firebase_auth)
- [google_sign_in](https://pub.dev/packages/google_sign_in)
- Stream Chat SDK for integrated chat functionality
- [stream_chat_flutter](https://pub.dev/packages/stream_chat_flutter)
- [stream_chat_persistence](https://pub.dev/packages/stream_chat_persistence)
- [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage)
- [streaming_shared_preferences](https://pub.dev/packages/streaming_shared_preference)
- Jitsi Meet SDK for video meetings & conferences
- [jitsi_meet](https://pub.dev/packages/firebase_core)
- Other dependencies in ```pubspec.yaml```
### Agile Methodologies
- Agile software development refers to a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams.

* This application follows the [Effective Dart: Style](https://dart.dev/guides/language/effective-dart/style) & the repository is
maintained following [Agile Methodologies](https://www.atlassian.com/agile) and [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)

- Hence, The development of this project was iterative: Design, Code, Redesign, Fix Errors. All new features were created using new git branches and merged into main from time to time. [Gitflow Workflow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)
- Issues, Ideas and Todos were tracked using a board for each sprint - Design, Build & Adapt
### App Permissions
- Internet access
- Access to camera
- Access to microphone
- Access to Storage
## Demo
Click to play
[](https://youtu.be/gfOrD80Qvcc)
**- [Screenshots](https://github.com/Karanjot-singh/microsoft_teams_clone/blob/main/docs/Features%20%26%20Screenshots.pdf)**
## Project References
- [Flutter API reference](https://api.flutter.dev/index.html)
- [Stream Chat Flutter Docs](https://getstream.io/chat/docs/flutter-dart/)
- [pub.dev API reference](https://pub.dev/packages/stream_chat_flutter/versions/2.0.0-nullsafety.7)
- [Flutter Samples](https://github.com/GetStream/flutter-samples)
- [Undraw](https://undraw.co/)
- Special Thanks to @imtoori (Stream SDK Devloper) for helping me throughout this project.
## Wiki
Please head to the [Wiki page](https://github.com/Karanjot-singh/microsoft_teams_clone/wiki) here.
## License
Microsoft Teams Clone is released under the [MIT License](https://github.com/Karanjot-singh/microsoft_teams_clone/blob/main/LICENSE).
## Connect with me
Drop by and say hello!
[
][LinkedIn]
[
][twitter]
[linkedIn]: https://www.linkedin.com/in/karanjot-singh-
[twitter]: https://twitter.com/Rocketsingh06