A cross-platform Google Meet-like video conferencing app built with React Native CLI (frontend) and Node.js/Express (backend) using WebRTC for real-time video/audio communication.
- User Authentication (optional, can be extended)
- Create/Join Meetings with unique session codes
- Real-time Video & Audio using WebRTC
- Multiple Participants (tested on real devices)
- Mute/Unmute Mic, Toggle Video, Switch Camera
- Draggable Local Video View (snaps to corners)
- Participant List with live status
- Chat Messaging (if implemented)
- Persistent Sessions (using MMKV + Zustand)
- Socket.io Signaling for WebRTC
- Responsive UI for phones and tablets
- Frontend: React Native CLI, Zustand, MMKV, react-native-webrtc, react-native-vector-icons
- Backend: Node.js, Express, Socket.io, MongoDB (for session persistence)
- Signaling: Socket.io
- Media: WebRTC (P2P)
- Node.js (18+ recommended)
- npm or yarn
- Android Studio/Xcode (for emulators)
- Two Android/iOS devices or emulators for multi-participant testing
git clone https://github.com/yourusername/google-meet-clone.git
cd google-meet-clonecd google_meet
npm installcd ../meet_server
npm install- Edit
meet_server/.envormeet_server/config.jsfor your MongoDB URI and server port.
- Edit
google_meet/src/service/config.js:- For local testing on Android device:
export const BASE_URL = 'http://<YOUR_PC_IP>:3000'export const SOCKET_URL = 'ws://<YOUR_PC_IP>:3000' - For emulator:
10.0.2.2(Android),localhost(iOS simulator) - For production: use your deployed server URL.
- For local testing on Android device:
cd ../meet_server
npm startcd ../google_meet
npx react-native run-android
# or
npx react-native run-ioscd android
./gradlew assembleDebug
# APK will be at android/app/build/outputs/apk/debug/app-debug.apk- Open the app on two or more devices.
- Create a meeting on one device.
- Join the meeting using the code on other devices.
- Allow camera/mic permissions.
- See and interact with all participants in real time.
google_meet/
├── src/
│ ├── components/
│ ├── screens/
│ ├── service/
│ ├── hooks/
│ ├── utils/
│ └── App.js
└── ...
meet_server/
├── controllers/
├── models/
├── app.js
└── ...
-
Video not showing:
- Ensure both devices are on the same WiFi.
- Check permissions for camera/mic.
- Check logs for ICE candidate or signaling errors.
- Make sure
BASE_URLandSOCKET_URLare correct for your network.
-
INSTALL_FAILED_USER_RESTRICTED:
- Enable "Install via USB" and "Install unknown apps" on your device.
-
Multiple devices:
- Use
adb devicesto list and--deviceIdto target specific devices.
- Use
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change.
- react-native-webrtc
- Socket.io
- Zustand
- MMKV
- Google Meet (UI inspiration)