A feature-rich Android messaging application built with Firebase, enabling secure real-time communication with contacts. ConnectingUs provides an intuitive messaging platform with user authentication, contact synchronization, and a user-friendly interface.
- 📜 Overview
- ✨ Features
- 🛠️ Tech Stack
- 📁 Project Structure
- 📋 Requirements
- 🚀 Installation & Setup
- 🔧 Configuration
- 📲 Usage
- 🏗️ Architecture
- 🔑 Key Components
- 🎓 Design Patterns
- ⬇️ Download
- 📜 License
- 🤝 Contributing
- 🙋 Support
- 📱 Compatibility
- 🔐 Security
ConnectingUs is a modern Android chat application that bridges people together through secure messaging. The app leverages Google Firebase services for authentication, real-time database synchronization, and cloud storage. It features a clean Material Design interface with support for Android 5.0 (API 21) and above.
- ⚡ Real-time Chat: Instant message delivery with Firebase Realtime Database
- 💭 Conversation Management: View all active conversations with last message preview
- 🕐 Message Timestamps: Track when messages were sent and received
- ⭐ Starred Messages: Save and quickly access important messages
- 📱 Phone-based Authentication: Secure login using Firebase Phone Authentication with OTP
- 📋 User Profiles: Create and customize user profiles with profile pictures
- ✏️ Profile Editing: Update name, bio, and profile photo anytime
- 👁️ Profile Viewing: View contact profiles and chat partner information
- 🔄 Contact Synchronization: Automatically sync device contacts to find ConnectingUs users
- 🔍 Smart Contact Search: Search and discover users from your contacts
- 📱 Contact Management: Seamless integration with Android contacts
- 📷 Camera Integration: Capture and send photos directly
- 🖼️ Image Expansion: View full-size images in expanded view
- 🎯 Profile Picture Upload: Support for profile photo management
- ☁️ Image Storage: Cloud storage via Firebase Storage
- 🔐 End-to-End Encryption: Messages encrypted using AES encryption
- 🛡️ Secure Authentication: Firebase Phone Authentication with OTP verification
- ⚙️ Permission Management: Granular permission handling for sensitive operations
- 🎛️ Settings Panel: Customize app preferences and behavior
- ℹ️ About Section: App information and version details
- 💌 Contact Support: Get help and support through in-app contact form
- ❓ Help Center: FAQs and troubleshooting guides
- 🎭 Material Design: Modern, polished Android Material Design UI
- 📑 Tab Navigation: Organize chats and camera in accessible tabs
- ✨ Smooth Animations: Enhanced visual feedback with slide and bounce animations
- 🌙 Night Mode Support: Support for light and dark theme variations
- Language: Java (JDK 1.8)
- Platform: Android SDK 21 - 32
- UI Framework: AndroidX (appcompat, constraintlayout, material)
- View Framework: View Binding for type-safe view references
- 🔐 Firebase Authentication: Phone number-based OTP authentication
- 🗄️ Firebase Realtime Database: Real-time message synchronization and data storage
- 💾 Firebase Storage: Cloud storage for images and media
- 📊 Firebase Analytics: User analytics and crash reporting
- 🎨 Material Design:
com.google.android.material:material:1.5.0 - 🔑 AES Encryption:
com.scottyab:aescrypt:0.0.1 - 🌐 Browser Support:
androidx.browser:browser:1.4.0 - ✅ Testing: JUnit, Espresso
- Build System: Gradle 32.0.0
- Min SDK: 21 (Android 5.0)
- Target SDK: 32 (Android 12)
- Compile SDK: 32
ConnectingUs/
├── app/
│ ├── build.gradle # App-level dependencies and configurations
│ ├── google-services.json # Firebase configuration file
│ ├── src/
│ │ ├── main/
│ │ │ ├── AndroidManifest.xml # App manifest and permissions
│ │ │ ├── java/
│ │ │ │ └── com/example/connectingus/
│ │ │ │ ├── authentication/ # Login, OTP, profile registration
│ │ │ │ │ ├── FirstActivity.java
│ │ │ │ │ ├── NumberVerify.java
│ │ │ │ │ ├── OTPVerify.java
│ │ │ │ │ └── ProfileEdit.java
│ │ │ │ ├── conversation/ # Chat and messaging screens
│ │ │ │ │ ├── ChatActivity.java
│ │ │ │ │ ├── ConversationList.java
│ │ │ │ │ ├── StarredMessage.java
│ │ │ │ │ └── TempDetailChatView.java
│ │ │ │ ├── contact/ # Contact syncing and management
│ │ │ │ │ ├── SyncContacts.java
│ │ │ │ │ └── RecyclerViewInterface.java
│ │ │ │ ├── profile/ # User profile management
│ │ │ │ │ ├── ChatProfile.java
│ │ │ │ │ ├── CurrentProfile.java
│ │ │ │ │ ├── Settings.java
│ │ │ │ │ ├── About.java
│ │ │ │ │ └── ExpandImageActivity.java
│ │ │ │ ├── models/ # Data models
│ │ │ │ │ ├── User.java
│ │ │ │ │ ├── Users.java
│ │ │ │ │ ├── ContactModel.java
│ │ │ │ │ ├── TempMsgModel.java
│ │ │ │ │ ├── StarredModel.java
│ │ │ │ │ ├── Aboutmsg.java
│ │ │ │ │ ├── ShareIds.java
│ │ │ │ │ └── DBHelper.java
│ │ │ │ ├── adapters/ # RecyclerView adapters
│ │ │ │ │ ├── MainAdapter.java
│ │ │ │ │ ├── ListAdapter.java
│ │ │ │ │ ├── TempMsgAdapter.java
│ │ │ │ │ ├── StarredAdapter.java
│ │ │ │ │ ├── SingleAdapter.java
│ │ │ │ │ └── PagerAdapter.java
│ │ │ │ ├── fragments/ # Fragment screens
│ │ │ │ │ ├── ChatsFragment.java
│ │ │ │ │ └── CameraFragment.java
│ │ │ │ ├── animation/ # Animation utilities
│ │ │ │ ├── support/ # Support utilities
│ │ │ │ ├── SplashActivity.java # App splash screen
│ │ │ │ ├── ContactUs.java # Contact support
│ │ │ │ └── Help_Contact.java # Help center
│ │ │ ├── res/
│ │ │ │ ├── drawable/ # Vector drawables and images
│ │ │ │ ├── drawable-v24/ # v24 specific resources
│ │ │ │ ├── layout/ # XML layout files
│ │ │ │ ├── values/ # Colors, strings, styles
│ │ │ │ ├── values-night/ # Night mode styles
│ │ │ │ ├── anim/ # Animation resources
│ │ │ │ └── mipmap-*/ # App icons
│ │ │ ├── test/ # Unit tests
│ │ │ └── androidTest/ # Instrumentation tests
│ ├── proguard-rules.pro # ProGuard/R8 obfuscation rules
│ └── build.gradle # Module build configuration
├── build.gradle # Project-level build configuration
├── settings.gradle # Project settings
├── gradle.properties # Gradle properties
├── gradlew # Gradle wrapper (Unix)
├── gradlew.bat # Gradle wrapper (Windows)
└── README.md # This file- ☕ Java Development Kit (JDK): Version 1.8 or higher
- 🤖 Android SDK: API Level 21 (Android 5.0) or higher
- 🛠️ Android Studio: Latest version with Gradle support
- 🖥️ OS: Windows, macOS, or Linux
- 💾 RAM: Minimum 4GB (8GB recommended)
- 🔥 Firebase Account: For backend configuration
- 📱 Device/Emulator: Android 5.0+ for testing
-
📥 Clone the repository:
git clone https://github.com/vivekutture/ConnectingUs.git cd ConnectingUs -
🛠️ Install Android Studio if not already installed
-
☕ Ensure JDK 1.8+ is installed and JAVA_HOME is set
-
📂 Open in Android Studio
- Launch Android Studio
- Select "Open an existing Android Studio project"
- Navigate to the cloned ConnectingUs directory
- Wait for Gradle to sync
-
📦 Sync Gradle
- Go to File → Sync Now
- Wait for all dependencies to download
-
📱 Create Android Emulator or Connect Device
- Set up an Android Virtual Device (API 21+) or connect a physical device
- Enable USB Debugging if using a physical device
-
▶️ Build & Run- Click "Run" (Shift + F10) or use Run → Run 'app'
- Select your emulator/device
- Wait for the APK to build and install
-
🆕 Create Firebase Project
- Go to Firebase Console
- Create a new project
-
📱 Add Android App
- In Firebase Console, click "Add app" → "Android"
- Enter package name:
com.example.connectingus - Download
google-services.json
-
📥 Place Configuration File
- Copy
google-services.jsontoapp/directory
- Copy
-
⚙️ Enable Firebase Services
- Enable Authentication (Phone)
- Enable Realtime Database
- Enable Storage
- Configure security rules as needed
The app requires the following permissions (defined in AndroidManifest.xml):
<!-- Storage -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<!-- Contacts -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!-- Communication -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />- 🚀 Launch App: Open ConnectingUs on your device
- ⏳ Splash Screen: Wait for the app to load
- 📞 Enter Phone Number: Select country and enter your phone number
- ✅ Verify OTP: Enter the OTP sent via SMS
- 🎨 Create Profile: Set your name and profile picture
- 💬 Start Chatting: Browse and chat with your contacts
- 👥 View Conversations: See all your chat conversations on the Chats tab
- ✍️ Send Message: Open a conversation, type a message, and send
- ⭐ Star Message: Long-tap a message to star/favorite it
- 👤 View Profile: Tap on contact name to view their profile
- 📷 Camera: Tab to Camera to capture and share photos
- 🔍 Search: Use search functionality to find contacts
- 👤 Profile: Edit name and profile picture
- 🔐 Account Settings: Manage account preferences
- ❓ Help & Support: Access help center or contact support
- ℹ️ About: View app information and version
The application follows a layered architecture pattern:
- 📱 Activities: Handle UI and user interactions
- 📄 Fragments: Modular UI components (Chats, Camera)
- 🔄 Adapters: RecyclerView adapters for data display
- ✨ Custom Views & Animations: Enhanced user experience
- 📊 Models: Data structures (User, ContactModel, MessageModel)
- ⚙️ Managers: Handle authentication, database operations
- 🛠️ Utilities: Helper functions for encryption, formatting
- 🗄️ Firebase Realtime Database: Message and user data
- ☁️ Firebase Storage: Images and media files
- 📦 Local SQLite: Via DBHelper for caching
- 💾 SharedPreferences: User preferences and IDs
🔐 Authentication Flow:
Splash → FirstActivity → NumberVerify → OTPVerify → ProfileEdit → ConversationList💬 Chat Flow:
ConversationList → ChatActivity → Message Send/Receive → Firebase Database- 🆔 FirstActivity: Initial authentication decision
- 📞 NumberVerify: Phone number input with validation
- ✅ OTPVerify: OTP verification with Firebase Phone Auth
- 🖼️ ProfileEdit: User profile creation and image upload
- 📋 ConversationList: Main chat list with tabs
- 💭 ChatActivity: Chat interface and message display
- ⭐ StarredMessage: View saved/starred messages
- 🔍 TempDetailChatView: Temporary message detail view
- Syncs device contacts with ConnectingUs users
- Uses RecyclerViewInterface for item click handling
- 👤 CurrentProfile: User's own profile
- 👥 ChatProfile: Other user's profile
- ⚙️ Settings: App settings and preferences
- 🖼️ ExpandImageActivity: Full-screen image viewer
- 👤 User: User information with messages and metadata
- 📇 ContactModel: Contact data structure
- 💬 TempMsgModel: Temporary message model for UI updates
- ⭐ StarredModel: Saved messages data
- 💾 DBHelper: Local database helper for SQLite operations
- 📝 MainAdapter: Main conversation list adapter
- 💬 TempMsgAdapter: Message adapter for chat views
- ⭐ StarredAdapter: Starred messages adapter
- 📑 PagerAdapter: Fragment pager adaptation for tabs
- 📌 ViewBinding Pattern: Type-safe view reference binding
- 🔄 Adapter Pattern: RecyclerView adapters
- 👀 Observer Pattern: Firebase listeners for real-time updates
- 🔐 Singleton Pattern: Firebase instances
- 📄 Fragment Pattern: Reusable UI components
📥 Download the latest APK from the releases page: Here
Or browse all releases: 🔗 GitHub Releases
📄 This project is licensed under the MIT License - see the LICENSE file for details.
- 🍴 Fork the repository
- 🌿 Create a feature branch (
git checkout -b feature/AmazingFeature) - 💾 Commit your changes (
git commit -m 'Add some AmazingFeature') - 📤 Push to the branch (
git push origin feature/AmazingFeature) - 🔀 Open a Pull Request
Please use the GitHub Issues section to report bugs or request new features.
- 📦 Minimum SDK: Android 5.0 (API 21)
- 🎯 Target SDK: Android 12 (API 32)
- ✨ Recommended: Android 11+ for best experience
🛡️ Security best practices:
- 🔐 Messages are encrypted using AES encryption
- 🔑 Phone authentication via Firebase for secure login
- 🤐 Always keep your OTP confidential
- ✅ Ensure you're running the official ConnectingUs app from verified sources