A modern Android application that combines real-time messaging with personal task management, built with Firebase backend and native Android development.
Tchat is a comprehensive mobile application that integrates two essential productivity features:
- Real-time Chat System: Instant messaging with multiple users
- Personal Task Manager: Organize and track your daily tasks
- Phone Number Authentication: Secure login using Firebase Auth with OTP verification
- User Profiles: Customizable usernames and profile management
- Country Code Picker: International phone number support
- Real-time Messaging: Instant message delivery using Firebase Firestore
- User Search: Find and connect with other users
- Chat History: Persistent message storage with timestamps
- Modern Chat UI: Clean, intuitive messaging interface with left/right message alignment
- Push Notifications: Real-time notification system for new messages
- Create & Edit Tasks: Add detailed tasks with titles and descriptions
- Task Status Tracking: Mark tasks as completed/incomplete
- Pin Important Tasks: Priority system for urgent tasks
- Search Functionality: Quickly find specific tasks
- Delete Tasks: Remove completed or unnecessary tasks
- User-specific Tasks: Personal task lists tied to user accounts
- Modern Design: Clean, Material Design-inspired interface
- Bottom Navigation: Easy switching between Chats, Profile, and Task Manager
- Responsive Layout: Optimized for various screen sizes
- Splash Screen: Professional app launch experience
- Android SDK: Target API 34, Minimum API 26
- Programming Language: Java
- IDE: Android Studio
- Firebase Firestore: Real-time NoSQL database for messages and tasks
- Firebase Authentication: Phone number verification and user management
- Firebase Cloud Messaging: Push notifications
- FirebaseUI: Firestore RecyclerAdapter for efficient data binding
- OkHttp: HTTP client for API communications
- Country Code Picker: International phone number input
- RecyclerView: Efficient list rendering for chats and tasks
- Material Design Components: Modern UI components
app/
βββ src/main/java/com/example/easychat/
β βββ activities/
β β βββ MainActivity.java # Main app navigation
β β βββ ChatActivity.java # Individual chat interface
β β βββ TaskManagerActivity.java # Task management interface
β β βββ LoginPhoneNumberActivity.java # Phone authentication
β β βββ LoginOtpActivity.java # OTP verification
β β βββ LoginUsernameActivity.java # Username setup
β βββ adapters/
β β βββ ChatRecyclerAdapter.java # Chat message list adapter
β β βββ TaskViewHolder.java # Task item view holder
β βββ models/
β β βββ ChatMessageModel.java # Message data structure
β β βββ TaskModel.java # Task data structure
β β βββ UserModel.java # User data structure
β β βββ ChatroomModel.java # Chatroom data structure
β βββ utils/
β β βββ FirebaseUtil.java # Firebase helper methods
β β βββ AndroidUtil.java # Android utility functions
β βββ fragments/
β βββ ChatFragment.java # Chat list fragment
β βββ ProfileFragment.java # User profile fragment
βββ res/
β βββ layout/ # XML layout files
β βββ drawable/ # Icons and graphics
β βββ values/ # Colors, strings, themes
βββ google-services.json # Firebase configuration
- Android Studio Arctic Fox or later
- Android SDK API 26+
- Firebase project setup
- Google Services JSON file
-
Clone the Repository
git clone [repository-url] cd android-chatsystem-taskmanager -
Firebase Configuration
- Create a Firebase project at Firebase Console
- Add your Android app to the project
- Download
google-services.jsonand place it inapp/directory - Enable Firebase Authentication (Phone) and Firestore Database
-
Open in Android Studio
- Open the project in Android Studio
- Sync Gradle files
- Ensure all dependencies are resolved
-
Build and Run
- Connect an Android device or start an emulator
- Build and run the application
Users Collection (users/)
{
"userId": "string",
"username": "string",
"phone": "string",
"createdTimestamp": "timestamp",
"fcmToken": "string"
}Tasks Collection (tasks/)
{
"taskId": "string",
"title": "string",
"description": "string",
"isCompleted": "boolean",
"isPinned": "boolean",
"createdAt": "timestamp",
"userId": "string"
}Chatrooms Collection (chatrooms/)
{
"chatroomId": "string",
"userIds": ["string", "string"],
"lastMessage": "string",
"lastMessageTimestamp": "timestamp",
"lastMessageSenderId": "string"
}Ensure proper Firestore security rules are configured:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Users can only access their own data
match /users/{userId} {
allow read, write: if request.auth != null && request.auth.uid == userId;
}
// Tasks are user-specific
match /tasks/{taskId} {
allow read, write: if request.auth != null &&
resource.data.userId == request.auth.uid;
}
// Chatroom access for participants only
match /chatrooms/{chatroomId} {
allow read, write: if request.auth != null &&
request.auth.uid in resource.data.userIds;
}
}
}- Phone Number Entry: Users enter their phone number with country code
- OTP Verification: Receive and enter verification code
- Username Setup: Choose a display name for the profile
- Chat List: View all active conversations
- User Search: Find new users to chat with
- Real-time Messaging: Send and receive messages instantly
- Task Overview: View all personal tasks
- Add New Tasks: Create tasks with titles and descriptions
- Task Actions: Mark complete, pin important tasks, or delete
- Search Tasks: Filter tasks by title
- Firebase Authentication: Secure phone number verification
- User Data Isolation: Users can only access their own data
- Firestore Security Rules: Server-side data protection
- Input Validation: Client-side data validation and sanitization
- FirestoreRecyclerAdapter: Efficient real-time data binding
- Pagination: Optimized loading for large datasets
- Background Processes: Non-blocking UI operations
- Memory Management: Proper lifecycle handling for activities and fragments
- Fork the repository
- Create a feature branch (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Hamza - Android Developer
- Project demonstrates expertise in Android development, Firebase integration, and modern mobile app architecture
- Group chat functionality
- Task categories and tags
- File sharing in chats
- Dark mode theme
- Task due dates and reminders
- Voice messages
- User status (online/offline)
- Task collaboration features
This project showcases modern Android development practices including Firebase integration, real-time data synchronization, user authentication, and clean architecture patterns.