A real-time Android chat application built with Kotlin and Firebase. This app features a modern UI and real-time synchronization for a seamless communication experience.
- User Authentication: Secure Sign-up and Sign-in using Firebase Authentication.
- Real-time Messaging: Instant message delivery and updates using Firebase Firestore snapshots.
- Presence Tracking: Real-time "Online" status and "Last seen" timestamps for all users.
- Typing Indicators: Live "User is typing..." feedback displayed in the chat toolbar.
- Read Receipts: Visual status indicators for messages:
- 🕒 Pending
- ✓ Sent
- ✓✓ Read (Green)
- Multimedia Support: Send text messages and images.
- User Profiles:
- View detailed user profiles including their live status.
- Update your own profile picture with a preview and save/discard validation.
- Message Management: Long-press on your own messages to "Unsend" (delete) them for everyone.
- Modern & Responsive UI:
- Built with Material Design 3 and View Binding.
- Edge-to-Edge support with intelligent keyboard (IME) inset handling.
- Circular image views for all user avatars.
- Smooth slide animations between Auth screens.
- Language: Kotlin
- Backend: Firebase (Firestore, Authentication)
- Image Handling: Glide for efficient loading and caching.
- UI Components:
- Material Design 3
- CircularImageView
- ConstraintLayout & RecyclerView
- Image Optimization: Intelligent Bitmap scaling and compression to Base64 for Firestore-friendly storage.
(Add your screenshots here to showcase the UI)
- Clone the repository:
git clone https://github.com/yourusername/Chatapp.git
- Firebase Configuration:
- Create a new project in the Firebase Console.
- Add an Android app with the package name
com.example.chatapp. - Download the
google-services.jsonfile and place it in theapp/directory. - Enable Email/Password authentication in the Firebase Auth tab.
- Create a Cloud Firestore database.
- Build & Run:
- Open the project in Android Studio.
- Sync project with Gradle files.
- Run the app on an emulator or a physical device.
This project is licensed under the MIT License.