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
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!
- 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
- Databinding
- MVVM Architecture
- Picasso/Glide
- 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
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.
-
The UI components are kept away from the business logic
-
The business logic is kept away from the database operations
-
It's easy to read (because everything has specific places to live)
-
And if done correctly, you have a lot less to worry about when it comes to lifecycle events (ex: screen rotations)