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.
- 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
- Node.js (v12 or higher)
- npm or yarn
- React Native CLI
- Xcode (for iOS development)
- Android Studio (for Android development)
- CocoaPods (for iOS dependencies)
-
Clone the repository
git clone https://github.com/superdev947/chatapp.git cd chatapp -
Install dependencies
npm install
-
iOS Setup
cd ios pod install cd ..
-
Configure Firebase
- Add your
google-services.jsontoandroid/app/ - Add your
GoogleService-Info.plisttoios/Messenger/ - Update Firebase configuration in
src/config.js
- Add your
-
Configure OAuth
- Update
facebookIdentifierinsrc/config.js - Update
webClientIdfor Google Sign-In insrc/config.js
- Update
iOS
npm run iosAndroid
npm run androidStart Metro Bundler
npm start- React Native 0.64.2 - Cross-platform mobile framework
- React 17.0.1 - UI library
- Redux - State management
- Redux Toolkit - Simplified Redux logic
- Firebase - Backend services (Auth, Messaging, Cloud Firestore)
- Socket.io - Real-time communication
- React Navigation 5 - Navigation library with stack, tab, and drawer navigators
- 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
- 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
- Google Sign-In
- Facebook Login
- Apple Authentication
- Firebase Auth (Email/Password, Phone)
- Formik & Yup - Form handling and validation
- Moment.js - Date manipulation
- i18n-js - Internationalization
- Lodash - Utility functions
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
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
The app supports multiple languages. Translation files are located in src/Translations/:
en.json- Englishfr.json- Frenchar.json- Arabic
Add more languages by creating new JSON files and updating the localization configuration.
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.
npm start- Start Metro bundlernpm run ios- Run on iOS simulatornpm run android- Build and run on Androidnpm test- Run testsnpm run lint- Run ESLintnpm run prettier- Format code with Prettier
- 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
cd android
./gradlew assembleRelease- Open
ios/Messenger.xcworkspacein Xcode - Select "Product" > "Archive"
- Follow the App Store submission process
Metro bundler issues
npm start -- --reset-cacheiOS 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 installContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your 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