A real-time messaging app built with React Native, Expo, and Firebase. Features include one-on-one and group chats, offline support, typing indicators, read receipts, and iMessage-style UI.
- 📱 Real-time Messaging - Instant message delivery with Firestore
- 👥 Group Chats - Create groups, add/remove participants inline
- 📴 Offline Support - Messages queue automatically and send when reconnected
- ✓✓ Read Receipts - iMessage-style read indicators with timestamps
- 💬 Typing Indicators - See when others are typing
- 🟢 Online Status - Green (active), yellow (background), or offline
- 🔒 Firebase Auth - Phone OTP, email/password, and Google Sign-In
- Node.js (v18+)
- Expo Go app installed on your phone
- iOS Simulator (Mac) or Android Emulator (optional)
No Firebase setup needed - The app is pre-configured with a test Firebase project. Just install and run!
-
Clone the repository
git clone https://github.com/mlx93/MessageAI.git cd MessageAI -
Install dependencies
npm install
-
Start the development server
npx expo start
-
Test on your device
Option 1: Physical Device (Recommended)
- Open Expo Go app on your phone
- Scan the QR code shown in terminal
- App will load automatically
Option 2: iOS Simulator (Mac only)
- Press
iin the terminal - Simulator will launch automatically
Option 3: Android Emulator
- Press
ain the terminal - Emulator will launch automatically
- Launch the app
- Tap "Create Account"
- Enter phone number (any format works)
- Enter OTP code:
123456(test code) - Complete your profile
- Import Contacts - Tap "Import Contacts" to find other users
- Start Chat - Tap a contact to start messaging
- Group Chat - Use "+" button in Messages tab to create a group
- Add Members - In any chat, tap the search bar to add more participants
- Offline Mode - Enable airplane mode, send messages, disable airplane mode to see them sync
- Register with different phone numbers on two devices
- Make sure both devices import contacts to find each other
- Start messaging to see real-time sync, typing indicators, and read receipts
app/ # Expo Router screens (file-based routing)
services/ # Firebase services (auth, messaging, contacts)
components/ # Reusable UI components
store/ # React Context (AuthContext)
types/ # TypeScript definitions
utils/ # Helper functions (phone formatting, message helpers)
functions/ # Firebase Cloud Functions
- Frontend: React Native, Expo SDK 54, TypeScript
- Backend: Firebase (Auth, Firestore, Storage, Functions, FCM)
- Local Storage: SQLite for caching, AsyncStorage for offline queue
- Navigation: Expo Router (file-based)
Ready to test immediately! The app is pre-configured with a Firebase project (messageai-mlx93) - no setup required. All Firebase credentials are included in the codebase.
Test Phone Numbers: Any number works
OTP Code: 123456
Test Email: Create any account with real email
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
MIT License - feel free to use this project for learning or building your own messaging app.
Built by mlx93
Questions? Open an issue on GitHub or check the docs/ folder for detailed guides.