/Messenger-Android

Realtime chat application developed using Firebase as backend & Android Jetpack components like Databinding, Room Database, MVVM architecture, RxJava and many more

Primary LanguageJava

Messenger - Android



My Messenger series

Part 1 - Flutter Mobile App
Part 2 - Flutter Web App
Part 3 - Android App - currently viewing

Part 4 - ChatBot using Natural Language Processing
Part 5 - One-PC-Facebook using C++ & File Handling


Part 3 - Android App




Android Chat Application developed using Android Studio & Firebase.

Supports 1-1 chat,Group chats including sharing of Media(docs,images & contacts) & deleting a message too!

📸 Screenshots

🔥 Firebase Screenshots

Features

  • 1-1 Chats
  • Group chat
  • Delete a chat message
  • Delete/clear all chat
  • User profile (change username, userphoto)
  • User status
  • Full chat history
  • Send/receive chat messages
  • Delivered-Sent-Read status
  • 'is typing' status
  • Global search
  • Unread messages count
  • Block list
  • Last message
  • Chat notifications
  • Attachments
  • Online/ Offline & Last Seen
  • Sending Friend Request
  • Calling Feature
  • Offline support enabled
  • QR Scanner Connect Friend

Built With 🛠

  • Databinding
  • MVVM Architecture
  • Picasso/Glide

Built With 🛠

  • Java - Best & Most used programming language for Android development.
  • Firebase
    • Firebase Authentication - Kowing the identity of the user to securely store the user data in the cloud and provide the same personalized experience across all of the user's devices
    • Firebase Cloud Firestore - To store data & keep it in sync across client apps & provide offline support
    • Firebase Storage - A storage service to store images, files, videos, audio
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • ViewBinding - 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.
  • Koin/ Dagger2 - Dependency Injection Framework
  • Glide - An image loading and caching library for Android focused on smooth scrolling.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.
  • Room Database
  • RxJava
  • RecyclerView

Used ConstraintLayout

Future Additions



👨‍🔧 Architecture

This app uses MVVM (Model View View-Model) architecture.

Personally, I think MVVM is the best way to structure code (in most situations).

The thing I like most about MVVM is the compartmentalization of the various components in a project.

  1. The UI components are kept away from the business logic

  2. The business logic is kept away from the database operations

  3. It's easy to read (because everything has specific places to live)

  4. And if done correctly, you have a lot less to worry about when it comes to lifecycle events (ex: screen rotations)



📱 Contact - Let's become friend 🤝

Licence