EasyChat is a modern real-time chat app built using Kotlin and Firebase. It allows users to authenticate via OTP, chat one-on-one, search for users, and manage profile data. The app is designed with performance, simplicity, and mobile responsiveness in mind β a perfect blend of Firebase's power and Material UI design.
Developer: Ashutosh Anand
Development Period: 2024β2025
- π Phone Number Authentication with Firebase OTP
- π§βπ¬ User Profiles: Set username and profile photo
- π¬ 1-to-1 Chat: Real-time messaging using Firestore
- π Recent Chats List: Optimized with embedded user details
- π Search Users by username
- πΌοΈ Profile Picture Viewer with full zoom-in layout
- π€ Offline Message Support with Firestore cache
- π Push Notifications (via FCM - optional)
- π§ Clean Architecture: MVVM-inspired structure with modular design
- Kotlin - Modern Android development language
- Jetpack Libraries - Lifecycle, ViewModel, etc.
- Material Design - UI/UX design system
- RecyclerView - Efficient list rendering
- FirebaseAuth - Phone OTP authentication
- Cloud Firestore - Real-time database
- Firebase Storage - For profile pictures
- Firebase Cloud Messaging - Push notifications
- Glide - Image loading and caching
- Gradle - Dependency management
- Android Studio - Development environment
EasyChat/ βββ activities/ β βββ ChatActivity.kt β βββ LoginPhoneNumberActivity.kt β βββ LoginOtpActivity.kt β βββ LoginUsernameActivity.kt β βββ SearchUserActivity.kt βββ fragments/ β βββ ChatFragment.kt β βββ ProfileFragment.kt βββ adapters/ β βββ ChatRecyclerAdapter.kt β βββ RecentChatRecyclerAdapter.kt β βββ SearchUserRecyclerAdapter.kt βββ models/ β βββ UserModel.kt β βββ ChatroomModel.kt β βββ ChatMessageModel.kt βββ utils/ β βββ AndroidUtil.kt β βββ FirebaseUtil.kt βββ layout/ β βββ *.xml (all activity + recycler row UIs) βββ MainActivity.kt
- Splash Screen β Auth check
- Login β Phone number + OTP β Username + Profile
- MainActivity β Contains Chat & Profile Fragments
- SearchUserActivity β Start chat with any user
- ChatActivity β Real-time conversation
---
## π§ App Flow
1. **Splash Screen** β Auth check
2. **Login** β Phone number + OTP β Username + Profile
3. **MainActivity** β Contains Chat & Profile Fragments
4. **SearchUserActivity** β Start chat with any user
5. **ChatActivity** β Real-time conversation
---
## π Firebase Security Rules (Sample)
```js
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{userId} {
allow read, write: if request.auth.uid == userId;
}
match /chatrooms/{chatroomId} {
allow read, write: if request.auth.uid in resource.data.userIds;
}
match /messages/{messageId} {
allow read, write: if request.auth.uid != null;
}
}
}
Key Activities and Components
ChatActivity β Real-time message screen
SearchUserActivity β Search and start chats
RecentChatRecyclerAdapter β Shows latest chats efficiently
FirebaseUtil.kt β Centralized Firestore/Auth handling
ChatroomModel β Stores chatroomId, last message, and cached user info
π‘ Future Improvements
β
Image sharing in chat
β
Group chat support
β³ Seen/delivered indicators
β³ Delete messages
β³ Typing indicator
β³ Message encryption
π¨βπ» Developer
Ashutosh Anand
LinkedIn: https://www.linkedin.com/in/ashutosh-anand-1651841b6/
GitHub: https://github.com/ashutosh2287
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Firebase for real-time services
Android Developers community for support
Inspiration from WhatsApp and Signal for UI/UX patterns