Skip to content

superdev947/chatapp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Instachatty - React Native Messenger App

A full-featured, cross-platform messenger application built with React Native, Firebase, and Redux. Send texts, photos, videos, and audio messages to your friends in private or group chats.

React Native Firebase Redux

πŸ“± Features

  • Private Messaging - One-on-one conversations with friends
  • Group Chats - Create and manage group conversations
  • Rich Media Support - Send photos, videos, and audio messages
  • Push Notifications - Stay updated with real-time notifications
  • Authentication - Multiple sign-in options (SMS, Email, Google, Facebook, Apple)
  • User Profiles - Customizable user profiles with avatars
  • Social Features - Friends list and user discovery
  • Location Sharing - Share your location with contacts
  • Mentions - Tag users in conversations
  • Dark Mode - Automatic theme switching support
  • Internationalization - Multi-language support (English, French, Arabic)
  • User Reporting - Report inappropriate content
  • Media Processing - Image cropping, video thumbnails, and compression

πŸš€ Getting Started

Prerequisites

  • Node.js (v12 or higher)
  • npm or yarn
  • React Native CLI
  • Xcode (for iOS development)
  • Android Studio (for Android development)
  • CocoaPods (for iOS dependencies)

Installation

  1. Clone the repository

    git clone https://github.com/superdev947/chatapp.git
    cd chatapp
  2. Install dependencies

    npm install
  3. iOS Setup

    cd ios
    pod install
    cd ..
  4. Configure Firebase

    • Add your google-services.json to android/app/
    • Add your GoogleService-Info.plist to ios/Messenger/
    • Update Firebase configuration in src/config.js
  5. Configure OAuth

    • Update facebookIdentifier in src/config.js
    • Update webClientId for Google Sign-In in src/config.js

Running the App

iOS

npm run ios

Android

npm run android

Start Metro Bundler

npm start

πŸ› οΈ Tech Stack

Core

  • React Native 0.64.2 - Cross-platform mobile framework
  • React 17.0.1 - UI library
  • Redux - State management
  • Redux Toolkit - Simplified Redux logic

Backend & Authentication

  • Firebase - Backend services (Auth, Messaging, Cloud Firestore)
  • Socket.io - Real-time communication

Navigation

  • React Navigation 5 - Navigation library with stack, tab, and drawer navigators

UI Components

  • React Native Elements - Pre-built UI components
  • React Native Vector Icons - Icon library
  • React Native UI Lib - UI components and utilities
  • Expo Modules - Camera, Image Picker, Location, AV

Media Handling

  • React Native Image Crop Picker - Image selection and cropping
  • React Native Fast Image - Optimized image loading
  • React Native Video - Video playback
  • React Native FFmpeg - Video processing

Authentication Providers

  • Google Sign-In
  • Facebook Login
  • Apple Authentication
  • Firebase Auth (Email/Password, Phone)

Other Key Libraries

  • Formik & Yup - Form handling and validation
  • Moment.js - Date manipulation
  • i18n-js - Internationalization
  • Lodash - Utility functions

πŸ“ Project Structure

chatapp/
β”œβ”€β”€ android/                 # Android native code
β”œβ”€β”€ ios/                     # iOS native code
β”œβ”€β”€ assets/                  # Static assets (fonts, icons)
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ components/          # Reusable UI components
β”‚   β”œβ”€β”€ Core/                # Core modules
β”‚   β”‚   β”œβ”€β”€ api/             # API layer (Firebase, local)
β”‚   β”‚   β”œβ”€β”€ chat/            # Chat functionality
β”‚   β”‚   β”œβ”€β”€ helpers/         # Utility functions
β”‚   β”‚   β”œβ”€β”€ localization/    # i18n configuration
β”‚   β”‚   β”œβ”€β”€ location/        # Location services
β”‚   β”‚   β”œβ”€β”€ mentions/        # User mentions
β”‚   β”‚   β”œβ”€β”€ notifications/   # Push notifications
β”‚   β”‚   β”œβ”€β”€ onboarding/      # User onboarding flow
β”‚   β”‚   β”œβ”€β”€ profile/         # User profiles
β”‚   β”‚   β”œβ”€β”€ socialgraph/     # Friend connections
β”‚   β”‚   β”œβ”€β”€ ui/              # Core UI components
β”‚   β”‚   β”œβ”€β”€ user-reporting/  # Content reporting
β”‚   β”‚   └── users/           # User management
β”‚   β”œβ”€β”€ navigations/         # Navigation configuration
β”‚   β”œβ”€β”€ redux/               # Redux store and slices
β”‚   β”œβ”€β”€ screens/             # App screens
β”‚   β”œβ”€β”€ Translations/        # Translation files
β”‚   β”œβ”€β”€ utils/               # Utility functions
β”‚   β”œβ”€β”€ config.js            # App configuration
β”‚   └── DynamicAppStyles.js  # Theme and styling
β”œβ”€β”€ App.js                   # Root component
└── package.json             # Dependencies

βš™οΈ Configuration

Update src/config.js to customize:

  • App identifier
  • Firebase configuration
  • OAuth credentials (Facebook, Google)
  • Onboarding screens
  • Navigation menu items
  • Sign-up fields
  • Profile fields
  • User settings
  • Terms of Service link

🌐 Internationalization

The app supports multiple languages. Translation files are located in src/Translations/:

  • en.json - English
  • fr.json - French
  • ar.json - Arabic

Add more languages by creating new JSON files and updating the localization configuration.

🎨 Theming

The app supports both light and dark modes. Theme configuration is in src/DynamicAppStyles.js. The app automatically detects and adapts to the system appearance setting.

πŸ“ Scripts

  • npm start - Start Metro bundler
  • npm run ios - Run on iOS simulator
  • npm run android - Build and run on Android
  • npm test - Run tests
  • npm run lint - Run ESLint
  • npm run prettier - Format code with Prettier

πŸ” Security

  • Firebase security rules should be configured for production
  • Store sensitive keys in environment variables
  • Update keystore files with your own for release builds
  • Configure ProGuard rules for Android obfuscation

πŸ“¦ Build for Production

Android

cd android
./gradlew assembleRelease

iOS

  1. Open ios/Messenger.xcworkspace in Xcode
  2. Select "Product" > "Archive"
  3. Follow the App Store submission process

πŸ› Troubleshooting

Common Issues

Metro bundler issues

npm start -- --reset-cache

iOS build fails

cd ios
pod deintegrate
pod install
cd ..

Android build fails

cd android
./gradlew clean
cd ..

Clear all caches

watchman watch-del-all
rm -rf node_modules
npm install

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your 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

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages