Skip to content

vivekjutture/ConnectingUs

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

153 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

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%