It's a chat app based on the Mvvm design pattern that built using Firebase service.
- Flow - In coroutines, a flow is a type that can emit multiple values sequentially, as opposed to suspend functions that return only a single value.
- ViewModel - The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way.
- Jetpack Navigation - Navigation refers to the interactions that allow users to navigate across, into, and back out from the different pieces of content within your app.
- Coroutines - A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously.
- LiveData - LiveData is an observable data holder class. Unlike a regular observable, LiveData is lifecycle-aware, meaning it respects the lifecycle of other app components, such as activities, fragments, or services.
- Hilt - Hilt is a dependency injection library for Android that reduces the boilerplate of doing manual dependency injection in your project.
- Cloud Storage - Cloud Storage is designed to help you quickly and easily store and serve user-generated content, such as photos and videos.
- Cloud Firestore - Cloud Firestore is a NoSQL document database that lets you easily store, sync, and query data for your mobile and web apps - at global scale.
- Firebase Authentication - Firebase Authentication aims to make building secure authentication systems easy, while improving the sign-in and onboarding experience for end users.
- Paging3 - The Paging library helps you load and display pages of data from a larger dataset from local storage or over network.
- Image Cropper - Powerful (Zoom, Rotation, Multi-Source); Customizable (Shape, Limits, Style); Optimized (Async, Sampling, Matrix); Simple image cropping library for Android.
- Image Compressor - Compressor is a lightweight and powerful android image compression library.