Skip to content

LetsChat is a Sample Messaging Android application built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Flow, Dagger-Hilt, Architecture Components, MVVM, Room, Testing, Coil, DataStore) and Firebase

License

Notifications You must be signed in to change notification settings

a914-gowtham/LetsChat

Repository files navigation

LetsChat

LetsChat is a Sample Messaging Android application built to demonstrate the use of Modern Android development tools - (Kotlin, Coroutines, Dagger-Hilt, Architecture Components, MVVM, Room, Coil) and Firebase

  • Create a firebase project and replace the google-services.json file which you get from your firebase project console
  • Following firebase services need to be enabled in the firebase console
    • Phone Auth
    • Cloud Firestore
    • Realtime Database
    • Storage
    • Composite indexes should be created for contact query(link for enabling indexes could be found from logcat while using the app)

You can Install and test latest LetsChat app from below 👇

LetsChat App

Features ✨

  • One on one chat
  • Group Chat
  • Typing status for one on one and group chat
  • Unread messages count
  • Message status for failed,sent,delivered and seen
  • Supported message types
    • Text
    • Voice
    • Sticker and Gif
  • Attachments
    • Image
    • Video - InProgress
  • Notification actions for reply and mark as read
  • Search users by username

Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines & Flow - For asynchronous and more..
  • Android Architecture Components - Collection of libraries that help you design quality, robust, testable, and maintainable apps.
    • Navigation Component - Handle everything needed for in-app navigation with a single Activity.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • DataBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.Declaratively bind observable data to UI elements.
    • WorkManager - WorkManager is an API that makes it easy to schedule deferrable, asynchronous tasks that are expected to run even if the app exits or the device restarts.
    • Room - SQLite object mapping library.
  • Dependency Injection -
    • Dagger-Hilt - Standard library to incorporate Dagger dependency injection into an Android application.
    • Hilt-ViewModel - DI for injecting ViewModel.
  • Firebase -
  • Kotlin Serializer - Convert Specific Classes to and from JSON.Runtime library with core serialization API and support libraries with various serialization formats.
  • Coil-kt - An image loading library for Android backed by Kotlin Coroutines.