Awesome
<p align="center"> <a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"/></a> <a href="https://android-arsenal.com/api?level=21"><img alt="API" src="https://img.shields.io/badge/API-21%2B-brightgreen.svg?style=flat"/></a> <a href="https://github.com/GetStream/meeting-room-compose/actions/workflows/android.yml"><img alt="Build Status" src="https://github.com/GetStream/meeting-room-compose/actions/workflows/android.yml/badge.svg"/></a> <a href="https://getstream.io?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2023_Jaewoong_MeetingRoomCompose&utm_term=DevRelOss"><img src="https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/HayesGordon/e7f3c4587859c17f3e593fd3ff5b13f4/raw/11d9d9385c9f34374ede25f6471dc743b977a914/badge.json" alt="Stream Feeds"></a> </p>This is a real-time meeting room app built with Jetpack Compose and Stream Video SDK for Compose, with a design reminiscent of Google Meet.
The primary objective of this repository is to showcase the following:
- Complete implementation of UI components using Jetpack Compose.
- Development of a real-time meeting room application with a seamless user experience, designed in a Google Meet style by customizing CallContent and ParticipantVideo.
- Creation of a lobby screen that provides control over physical devices before joining a meeting room, including toggling the camera/microphone and flipping the camera view.
- Illustration of multiple participants connecting from various platforms, such as web and Android.
βοΈ Technical Content
If you're keen on learning about constructing a real-time meeting room application using Jetpack Compose, we recommend exploring Build a Real-Time Meeting Room App for Android With Jetpack Compose.
:bulb: Additional Repositories
If you're interested in exploring more repositories that utilize Jetpack Compose and Stream SDK, take a look at the following repositories:
- ChatGPT Android: π± ChatGPT Android demonstrates OpenAI's ChatGPT on Android with Stream Chat SDK for Compose.
- Whats App Clone Compose: π± WhatsApp clone project demonstrates modern Android development built with Jetpack Compose and Stream Chat SDK for Compose.
- Slack Clone Android: π± A chat demo app built with Jetpack Compose and Stream Chat SDK following clean architecture principles.
- Stream Draw Android: π₯ Stream Draw is a real-time multiplayer drawing & chat game app built entirely with Jetpack Compose.
- Facebook Messenger Clone: Facebook Messenger clone using Stream SDK & Jetpack Compose.
π² Download APK
Go to the Releases to download the latest APK.
<a href="https://getstream.io/video/docs/android?utm_source=Github&utm_medium=Jaewoong_OSS&utm_content=Developer&utm_campaign=Github_Aug2023_Jaewoong_MeetingRoomCompose&utm_term=DevRelOss"> <img src="https://user-images.githubusercontent.com/24237865/138428440-b92e5fb7-89f8-41aa-96b1-71a5486c5849.png" align="right" width="12%"/> </a>π₯ Stream Video SDK
Meeting Room Compose is built with Stream Video SDK for Compose to implement real-time video room features. If youβre interested in adding powerful In-App Video Calling, Audio Room, Livestream features to your app, check out the Android Video Calling Tutorial!
- Stream Video SDK for Android on GitHub
- Video Call Tutorials
- Audio Room Tutorials
- Livestream Tutorials
π» Build Your Own Video Meeting Room Project
<details> <summary> If you want to build your own video meeting room project, you should follow the instructions below:</summary> <de>- Go to the Stream login page.
- If you have your GitHub account, click the SIGN UP WITH GITHUB button and you can sign up within a couple of seconds.
- If you don't have a GitHub account, fill in the inputs and click the START FREE TRIAL button.
- Go to the Dashboard and click the Create App button like the below.
- Fill in the blanks like the below and click the Create App button.
- You will see the Key like the figure below and then copy it.
-
Go to the MeetingRoomApp class and change the
apiKey
property with your key. -
Build and run the project.
π· Previews
<p align="center"> <img src="previews/preview0.png" alt="drawing" width="330" /> <img src="previews/preview2.png" alt="drawing" width="330" /> </p>π Tech Stack & Open Source Libraries
- Minimum SDK level 21.
- 100% Jetpack Compose based + Coroutines + Flow for asynchronous.
- Stream Video SDK for Compose: Stream's versatile Core + Compose UI component libraries that allow you to build video calling, audio room, and, live streaming apps based on Webrtc running on Stream's global edge network.
- Jetpack
- Compose: Androidβs modern toolkit for building native UI.
- ViewModel: UI related data holder and lifecycle aware.
- Navigation: For navigating screens and Hilt Navigation Compose for injecting dependencies.
- Hilt: Dependency Injection.
- Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
- Sandwich: An adaptable and lightweight sealed API library designed for Kotlin and Android, specializing in efficient Retrofit response modeling and exception handling.
- ksp: Kotlin Symbol Processing API.
π¨βπ¨βπ¦βπ¦ Testing Multiple Participants
For interactive tests across different platforms, you can utilize Stream web applications. You can simply join the web application with Stream Video Web Demo.
π€ Contribution
Most of the features are not completed except the chat feature, so anyone can contribute and improve this project following the Contributing Guideline.
Find this repository useful? π
Support it by joining stargazers for this repository. :star: <br> Also, follow maintainers on GitHub for our next creations! π€©
License
Copyright 2023 Stream.IO, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.