A real-time 1:1 chat application built using React Native (Expo) on the frontend and Node.js (Express + Socket.IO + MongoDB) on the backend. Implements authentication (JWT), real-time messaging, typing indicators, and online/offline presence.
- JWT-based Register & Login
- Persistent login with AsyncStorage
- Protected routes (Expo Router + Zustand state management)
- Real-time 1:1 messaging via Socket.IO
- Messages saved & fetched from MongoDB
- Typing indicators
- Online/Offline status
- Last message preview in user list
- React Native + Expo Router navigation
- Home screen with user list
- Chat screen with scrollable messages
- Clean, minimal UI with Tailwind (NativeWind)
| Login Screen | Signup Screen | Home Screen | Signup Screen |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- React Native (Expo)
- Zustand (state management)
- Socket.IO Client
- NativeWind (TailwindCSS for RN)
- Node.js + Express
- Socket.IO
- MongoDB + Mongoose
- JSON Web Tokens (JWT)
- bcrypt (password hashing)
git clone https://github.com/Asim-Mulla/OpenChat.git- Navigate to backend directory
cd backend/- Install dependencies
npm install- Create
.envfile in the backend directory
MONGO_URI=your_mongodb_connection_string
JWT_SECRET=your_jwt_secret_key- Start the server
npm run dev- Open new terminal and navigate to frontend directory
cd frontend/- Install dependencies
npm install-
Replace the SERVER_URL to your IPv4 Address (http://your_ipv4_address:3000)
-
Run the Expo app
npx expo


