Skip to content

The ConnectingUs chat application enables seamless communication and connection between users, providing a simple yet effective means of real-time messaging. The software is available for download and installation through the official GitHub release page, making it accessible to a wide range of users.

License

Notifications You must be signed in to change notification settings

vivekjutture/ConnectingUs

 
 

Repository files navigation

🚀 ConnectingUs 💬📱

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.

📑 Table of Contents

📜 Overview

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.

✨ Features & Capabilities

💬 Core Messaging

  • ⚡ 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

👤 User Management

  • 📱 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 Integration

  • 🔄 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

🎥 Media & Attachments

  • 📷 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

🔒 Security & Privacy

  • 🔐 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 & Support

  • 🎛️ 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

🎨 User Interface

  • 🎭 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

🛠️ Tech Stack Overview

💻 Frontend

  • 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

🔥 Backend & Services

  • 🔐 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

📦 Libraries & Dependencies

  • 🎨 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 Tools

  • Build System: Gradle 32.0.0
  • Min SDK: 21 (Android 5.0)
  • Target SDK: 32 (Android 12)
  • Compile SDK: 32

📁 Project Structure & Organization

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

� Requirements & Dependencies

  • ☕ 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

🚀 Installation & Setup Guide

✅ Prerequisites

  1. 📥 Clone the repository:

    git clone https://github.com/vivekutture/ConnectingUs.git
    cd ConnectingUs
  2. 🛠️ Install Android Studio if not already installed

  3. ☕ Ensure JDK 1.8+ is installed and JAVA_HOME is set

🔧 Project Setup

  1. 📂 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
  2. 📦 Sync Gradle

    • Go to File → Sync Now
    • Wait for all dependencies to download
  3. 📱 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
  4. ▶️ Build & Run

    • Click "Run" (Shift + F10) or use Run → Run 'app'
    • Select your emulator/device
    • Wait for the APK to build and install

🔧 Configuration & Setup

🔥 Firebase Setup Guide

  1. 🆕 Create Firebase Project

  2. 📱 Add Android App

    • In Firebase Console, click "Add app" → "Android"
    • Enter package name: com.example.connectingus
    • Download google-services.json
  3. 📥 Place Configuration File

    • Copy google-services.json to app/ directory
  4. ⚙️ Enable Firebase Services

    • Enable Authentication (Phone)
    • Enable Realtime Database
    • Enable Storage
    • Configure security rules as needed

📱 Android Permissions

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" />

📲 Usage Guide

🎯 First Time Setup

  1. 🚀 Launch App: Open ConnectingUs on your device
  2. ⏳ Splash Screen: Wait for the app to load
  3. 📞 Enter Phone Number: Select country and enter your phone number
  4. ✅ Verify OTP: Enter the OTP sent via SMS
  5. 🎨 Create Profile: Set your name and profile picture
  6. 💬 Start Chatting: Browse and chat with your contacts

💬 Chat Features

  • 👥 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

⚙️ Settings

  • 👤 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

🏗 Architecture

The application follows a layered architecture pattern:

🎨 Presentation Layer

  • 📱 Activities: Handle UI and user interactions
  • 📄 Fragments: Modular UI components (Chats, Camera)
  • 🔄 Adapters: RecyclerView adapters for data display
  • ✨ Custom Views & Animations: Enhanced user experience

🧠 Business Logic Layer

  • 📊 Models: Data structures (User, ContactModel, MessageModel)
  • ⚙️ Managers: Handle authentication, database operations
  • 🛠️ Utilities: Helper functions for encryption, formatting

💾 Data Layer

  • 🗄️ Firebase Realtime Database: Message and user data
  • ☁️ Firebase Storage: Images and media files
  • 📦 Local SQLite: Via DBHelper for caching
  • 💾 SharedPreferences: User preferences and IDs

🔄 Key Flows

🔐 Authentication Flow:

Splash → FirstActivity → NumberVerify → OTPVerify → ProfileEdit → ConversationList

💬 Chat Flow:

ConversationList → ChatActivity → Message Send/Receive → Firebase Database

🔑 Key Components

🔐 Authentication Module (authentication/)

  • 🆔 FirstActivity: Initial authentication decision
  • 📞 NumberVerify: Phone number input with validation
  • ✅ OTPVerify: OTP verification with Firebase Phone Auth
  • 🖼️ ProfileEdit: User profile creation and image upload

💬 Conversation Module (conversation/)

  • 📋 ConversationList: Main chat list with tabs
  • 💭 ChatActivity: Chat interface and message display
  • ⭐ StarredMessage: View saved/starred messages
  • 🔍 TempDetailChatView: Temporary message detail view

📱 Contact Module (contact/)

  • Syncs device contacts with ConnectingUs users
  • Uses RecyclerViewInterface for item click handling

👤 Profile Module (profile/)

  • 👤 CurrentProfile: User's own profile
  • 👥 ChatProfile: Other user's profile
  • ⚙️ Settings: App settings and preferences
  • 🖼️ ExpandImageActivity: Full-screen image viewer

🗃️ Models (models/)

  • 👤 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

🔄 Adapters (adapters/)

  • 📝 MainAdapter: Main conversation list adapter
  • 💬 TempMsgAdapter: Message adapter for chat views
  • ⭐ StarredAdapter: Starred messages adapter
  • 📑 PagerAdapter: Fragment pager adaptation for tabs

🎓 Design Patterns Used

  1. 📌 ViewBinding Pattern: Type-safe view reference binding
  2. 🔄 Adapter Pattern: RecyclerView adapters
  3. 👀 Observer Pattern: Firebase listeners for real-time updates
  4. 🔐 Singleton Pattern: Firebase instances
  5. 📄 Fragment Pattern: Reusable UI components

⬇️ Download & Installation

📥 Download the latest APK from the releases page: Here

Or browse all releases: 🔗 GitHub Releases

📜 License

📄 This project is licensed under the MIT License - see the LICENSE file for details.

🤝 Contributing Guidelines

♥️ Contributions are welcome! Please follow these steps:

  1. 🍴 Fork the repository
  2. 🌿 Create a feature branch (git checkout -b feature/AmazingFeature)
  3. 💾 Commit your changes (git commit -m 'Add some AmazingFeature')
  4. 📤 Push to the branch (git push origin feature/AmazingFeature)
  5. 🔀 Open a Pull Request

🐛 Bug Reports & Feature Requests

Please use the GitHub Issues section to report bugs or request new features.

📱 Device Compatibility

  • 📦 Minimum SDK: Android 5.0 (API 21)
  • 🎯 Target SDK: Android 12 (API 32)
  • ✨ Recommended: Android 11+ for best experience

🔐 Security Notice

🛡️ 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

About

The ConnectingUs chat application enables seamless communication and connection between users, providing a simple yet effective means of real-time messaging. The software is available for download and installation through the official GitHub release page, making it accessible to a wide range of users.

Topics

Resources

License

Stars

Watchers

Forks

Contributors

Languages

  • Java 100.0%