# VideoPeers - Real Time P2P Video Chat Application ## Description This is a real time video chat application built using WebRTC, Socket.io, Node.js, Express.js, and Next.js. It allows users to create a room and share the room ID with other users to join the room for a peer-to-peer video call. ## Key Features - [x] Create and join video chat rooms using room IDs - [x] Real-time peer-to-peer video calling using WebRTC - [x] Audio mute/unmute controls - [x] Video Hold/Play controls - [x] Call End option - [x] Responsive Design - [x] Built with Next.js, Node.js, Express, Socket.io ## Technologies used / Prerequisites Of The Project - [Next.js](https://nextjs.org/) - React framework - [WebRTC](https://webrtc.org/) - Real-time communication - [Socket.io](https://socket.io/) - Bidirectional communication - [Node.js](https://nodejs.org/) - Backend runtime - [Express](https://expressjs.com/) - Node.js framework - [Tailwind CSS](https://tailwindcss.com/) - Styling ## Installation 1. Clone the repository ```bash git clone https://github.com/hirentimbadiya/Video-Peers.git ``` 2. Install dependencies for Client Side ```bash cd client #in Video-Peers/client npm install ``` 3. Install dependencies for Server Side ```bash cd server #in Video-Peers/server npm install ``` 4. Run the application - Run the client side ```bash cd client #in Video-Peers/client npm run dev ``` - Run the server side ```bash cd server #in Video-Peers/server npm run dev ``` ## Video Demo ## Future Scope - Text chat support in rooms - Screen Sharing Feature - Multiple Participants in a room - Video recording option ## My Learnings By Building this project I learned about the following concepts: - WebRTC (Web Real-Time Communication) is a technology that enables real-time peer-to-peer communication between browsers and mobile applications. It is an open-source and free project that used to provide web browsers and mobile applications with real-time communication (RTC) via simple application programming interfaces (APIs). - Socket.IO is a library that enables real-time, bidirectional and event-based communication between the browser and the server. It consists of: a Node.js server: Source | API. a Javascript client library for the browser (which can be also run from Node.js): Source | API. - Next.js is a React framework that enables several server-side rendering (SSR) features such as static site generation (SSG), automatic code splitting, server-side rendering, and client-side routing. It is a framework that is built on top of React.js and Node.js. ## License [MIT](https://choosealicense.com/licenses/mit/) ## Author - [hirentimbadiya](https://github.com/hirentimbadiya) - Email : hirentimbadiya74@gmail.com