A real-time one-on-one video calling application built using React, WebRTC, Socket.io, and Node.js. Features include camera/audio toggle, room link sharing, negotiation handling, and call ending.
- Peer-to-peer video calling using WebRTC
- Signaling via Socket.io
- Auto negotiation handling
- Toggle camera/microphone
- Shareable joining link
- Clean React-based UI
- Code base joining
- Frontend: React, Tailwind CSS
- Backend: Node.js, Express, Socket.io, Redis
- Other: WebRTC
- UI Components: reactVideoplayer, Material UI
git clone https://github.com/sunjay-dev/Video-calling-App
cd video-calling-App
cd Backend
npm install
cd Frontend
npm install
cd Backend
REDIS_HOST=REDIS_HOST_URI
REDIS_PASSWORD=REDIS_PASSWORD
REDIS_PORT=REDIS_PORT
PORT=PORT
npm start
cd Frontend
VITE_BACKEND_URL=BACKEND_URL
npm run dev
Open http://localhost:5173
in your browser.
- A user creates a room.
- The room link is shared with another user.
- When the second user joins, WebRTC offer/answer exchange happens via Socket.io.
- Media streams are transferred directly peer-to-peer.
- Automatic re-negotiation is handled as needed.
This app requires access to:
- 📷 Camera
- 🎤 Microphone
Make sure to allow permissions in your browser.
/
├── Frontend/ # React frontend
│ └── components/ # UI components
│ └── context/ # Socket context
│ └── services/ # Peer (WebRTC) logic
│ └── App.jsx
│ └── main.jsx
│
├── Backend/ # Express + Socket.io backend
│ └── App.js
| └── server.js
│ └── socket.js
|
├── Assests/ # ScreenShots of App
├── README.md