An Android application that showcases offline chat through the usage of RoomDB along with Jetpack Compose UI.
The Android app lets you:
- User Authentication - Register & Login using username and password.
- Chat History, where you can see all your conversations with other registered users.
- Messaging, where you can chat with the other registered users along with media (video & image) support.
- Echo Last Message, where the last message sent by the user will be echoed from the recipient end.
- Offline Support
- Minimum SDK level 24
- Kotlin based + Coroutines for asynchronous.
- Dagger-Hilt for dependency injection.
- JetPack
- State - Notify domain layer data to views.
- SharedFlows - Notify one-time events to the UI layer.
- Lifecycle - Dispose of observing data when the lifecycle state changes.
- ViewModel - UI-related data holder, lifecycle aware.
- Compose - Render UI.
- Architecture
- MVVM Architecture (Model - View - ViewModel)
- Repository pattern
- data ~ domain ~ presentation
- Glide - Compose - Loading Images for Jetpack Compose.
- ExoPlayer - Loading Video Playback
- DataStore - For handling shared preferences
- Room Database - For offline caching of data