This is a React Native application built with Expo that features:
- Firebase email/password authentication
- WebRTC-based video calling functionality
- Light and dark mode support
-
Install dependencies
npm install
-
Start the app
npx expo start
- Firebase email/password authentication
- User sign-up and login
- Session persistence using AsyncStorage
- Peer-to-peer video calls using WebRTC
- Firestore-based signaling for WebRTC connection establishment
- Call controls:
- Mute/unmute audio
- Enable/disable video
- Switch camera (front/back)
- End call
- Share call ID to invite others to join
- Adaptive UI for both light and dark modes
The video calling feature uses a peer-to-peer WebRTC connection architecture with Firebase Firestore as the signaling server. Here's how it works:
-
Call Creation:
- User creates a call which generates a unique call ID
- An SDP offer is created and stored in Firestore
- ICE candidates are collected and stored in Firestore
-
Call Joining:
- Other user joins using the call ID
- Retrieves the SDP offer from Firestore
- Creates an SDP answer and stores it back in Firestore
- ICE candidates are exchanged through Firestore
-
Media Handling:
- Local and remote video streams are managed using RTCView
- Camera and microphone access permissions are requested
- Video/audio can be toggled on/off during the call
- Authentication: Email/password authentication
- Firestore Collections:
calls: Stores call information, offers, and answerscalls/{callId}/callerCandidates: Stores ICE candidates from the callercalls/{callId}/calleeCandidates: Stores ICE candidates from the callee
-
Authentication:
- Sign up with email and password
- Log in with existing credentials
-
Video Calling:
- Navigate to the Video Call tab
- Tap "Start New Call" to create a call
- Share the generated call ID with another user
- Other user enters ID and taps "Join"
- Use on-screen controls for mute, camera toggle, etc.
This project uses Expo Router for file-based routing and navigation.
Join our community of developers creating universal apps.
- Expo on GitHub: View our open source platform and contribute.
- Discord community: Chat with Expo users and ask questions.