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