Ultimate Communication - A modern, real-time chat application built with React Native and Firebase.
- โ Phone number authentication with OTP verification
- โ Real-time messaging with instant delivery
- โ User profile management
- โ Search users by phone number
- โ Unread message badges
- โ Last message preview
- โ Clean, modern UI with TailwindCSS (NativeWind)
- โ Offline support
- โ Type-safe with TypeScript
- ๐ Push notifications
- ๐ข Online/offline indicators
- ๐ธ Profile picture upload
- โ Read receipts
- ๐ Location sharing
- ๐ End-to-end encryption
- ๐น Video calling (Stream.io integration)
- ๐ฅ Group chats
Note: Make sure you have completed the React Native Environment Setup before proceeding.
- Node.js >= 20
- React Native CLI
- Android Studio (for Android development)
- Xcode (for iOS development)
- Firebase project with Authentication & Firestore enabled
npm installnpm install react-native-gifted-chat --legacy-peer-deps-
Create a Firebase Project
- Go to Firebase Console
- Create a new project or use an existing one
-
Enable Authentication
- Navigate to Authentication โ Sign-in method
- Enable "Phone" authentication
-
Create Firestore Database
- Navigate to Firestore Database
- Create database in production mode
- Set up security rules (see
SETUP_INSTRUCTIONS.md)
-
Create Composite Index
- Collection:
chats - Fields:
participants(Array-contains) +updatedAt(Descending) - Or wait for the error link when running the app
- Collection:
-
Download Config Files
- Android: Download
google-services.jsonโ Place inandroid/app/ - iOS: Download
GoogleService-Info.plistโ Place inios/UltCom/
- Android: Download
cd ios
bundle install
bundle exec pod install
cd ..npm startnpm run androidnpm run iosIf everything is set up correctly, you should see UltCom running in your emulator/simulator or connected device.
UltCom/
โโโ src/
โ โโโ navigation/
โ โ โโโ AppNavigator.tsx # Main navigation logic
โ โ โโโ types.ts # Navigation types
โ โโโ screens/
โ โ โโโ auth/
โ โ โ โโโ LoginScreen.tsx # Phone auth + OTP
โ โ โ โโโ ProfileSetupScreen.tsx # New user profile
โ โ โโโ main/
โ โ โโโ HomeScreen.tsx # Chat list
โ โ โโโ ChatScreen.tsx # Real-time messaging
โ โ โโโ SearchUserScreen.tsx # Find users
โ โโโ services/
โ โ โโโ userServices.ts # Presence & notifications
โ โโโ types/
โ โโโ models.ts # TypeScript interfaces
โโโ android/ # Android native code
โโโ ios/ # iOS native code
โโโ SETUP_INSTRUCTIONS.md # Detailed setup guide
โโโ SCHEMA_DOCUMENTATION.md # Firestore schema docs
-
Sign Up/Login
- Enter your phone number with country code
- Verify the OTP sent to your phone
- Set up your profile (first-time users only)
-
Start Chatting
- Tap the + button on the home screen
- Search for a user by phone number
- Start messaging instantly!
-
View Conversations
- All your chats appear on the home screen
- Unread messages show badges
- Tap any chat to continue the conversation
Solution: Click the error link or create index manually in Firebase Console
- Collection:
chats - Fields:
participants(array-contains) +updatedAt(descending)
Solution:
- Check Firebase Console โ Authentication โ Phone is enabled
- Verify your phone number is correct with country code
- Check Firebase usage limits
Solution: Update Firestore security rules (see SETUP_INSTRUCTIONS.md)
Solution:
- Clean build:
cd android && ./gradlew clean && cd .. - iOS:
cd ios && pod deintegrate && pod install && cd .. - Clear Metro cache:
npm start -- --reset-cache
- ๐ SETUP_INSTRUCTIONS.md - Detailed setup guide
- ๐ SCHEMA_DOCUMENTATION.md - Database schema reference
- Framework: React Native 0.83.1
- Language: TypeScript
- Backend: Firebase (Auth + Firestore)
- Navigation: React Navigation
- Styling: NativeWind (TailwindCSS)
- Chat UI: React Native Gifted Chat
MIT License - feel free to use this project for learning or commercial purposes.
Contributions, issues, and feature requests are welcome!
Built with โค๏ธ using React Native and Firebase