A real-time messaging Android application built with Kotlin, Jetpack Compose, Room Database (for offline caching), Firebase Firestore (for real-time data sync) and Cloudinary (for cloud storage of media & statuses).
- Android OS: Android 7.0 (Nougat, API Level 24) or higher.
- Google Play Services: Required for Firebase services.
- Permissions: Internet access (for sync) and notification access (optional, to show incoming message alerts).
- Download the K-Chat APK (or visit the GitHub Releases page) directly on your Android device.
- If prompted, enable installation from unknown sources in your device settings (Settings > Security or Settings > Apps > Special app access > Install unknown apps).
- Open your device's file manager, navigate to the Downloads folder, and tap on the downloaded
.apkfile. - Tap Install and follow the on-screen instructions.
- Phone-Based Authentication: Login with OTP verification.
- Session Persistence: Auto-login capabilities using
DataStore Preferences.
- Real-Time Text Chats: Fast, responsive messaging using real-time Firebase Firestore synchronization.
- Image Sharing: Send and receive photos securely, with upload integration to Cloudinary.
- Image Viewer: Full-screen interactive viewer for high-quality media messages.
- Message Status:
SENT: Message uploaded to the server.DELIVERED: Updated instantly when the recipient is online usingGlobalDeliveryScanner.READ: Marked when the recipient opens the chat.
- Message Controls:
- Delete for Me: Removes the message locally and marks it in Firestore.
- Delete for Everyone: Replaces the message content with a tombstone (
🚫 This message was deleted) for all chat participants.
- Text Status: Write text updates with dynamic background colors.
- Photo Status: Upload status images directly via Cloudinary.
- 24-Hour Expiration: Automatic status deletion and clean-up of stale updates.
- Push Notifications: Live messages delivered via Firebase Cloud Messaging (FCM).
- Deep Linking: Seamless routing directly from notifications to specific chat screens using custom URI schemes.
- User Presence: Dynamic online/offline status indicator displayed in real-time.
The app is built using Jetpack Compose for a fully declarative and modern UI.
- UI Framework: Jetpack Compose
- Local Cache: Room Database for caching messages locally, facilitating fast load times and offline support.
- Database Backend: Firebase Firestore for instant remote sync.
- Image Loader: Coil for asynchronous Compose image loading.
- Cloud Storage: Cloudinary SDK for media storage.
- Dependency Management: Gradle Version Catalog (
libs.versions.toml). - Asynchronous Flow: Kotlin Coroutines & Flow.