Skip to content

sunjay-dev/Video-calling-App

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 

Repository files navigation

📞 WebRTC Video Calling App

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.


🚀 Features

  • 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

🛠️ Tech Stack

  • Frontend: React, Tailwind CSS
  • Backend: Node.js, Express, Socket.io, Redis
  • Other: WebRTC
  • UI Components: reactVideoplayer, Material UI

📦 Installation

1. Clone the repository

git clone https://github.com/sunjay-dev/Video-calling-App
cd video-calling-App

2. Install dependencies

Backend (Node.js + Socket.io)

cd Backend
npm install

Frontend (React)

cd Frontend
npm install

▶️ Running Locally

Start Backend

cd Backend

Create .env file

REDIS_HOST=REDIS_HOST_URI
REDIS_PASSWORD=REDIS_PASSWORD
REDIS_PORT=REDIS_PORT
PORT=PORT
npm start

Start Frontend

cd Frontend

Create .env file

VITE_BACKEND_URL=BACKEND_URL
npm run dev

Open http://localhost:5173 in your browser.


🌐 How It Works

  1. A user creates a room.
  2. The room link is shared with another user.
  3. When the second user joins, WebRTC offer/answer exchange happens via Socket.io.
  4. Media streams are transferred directly peer-to-peer.
  5. Automatic re-negotiation is handled as needed.

🔐 Permissions

This app requires access to:

  • 📷 Camera
  • 🎤 Microphone

Make sure to allow permissions in your browser.


📁 Project Structure

/
├── 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

📸 Screenshots

Home

Home page screenshot

Room

Room page screenshot

404 Page

404 page screenshot