<div align="center">Messenger - Android</div>
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
</B>
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)