StreamTalk is a real-time video calling application built using Next.js, Socket.IO, and WebRTC. This app allows users to connect with each other via live video and audio, offering seamless and interactive communication.
- Real-time video and audio calls using WebRTC.
- Peer-to-peer communication through WebRTC.
- Socket.IO integration for signaling between clients.
- Responsive design built for multiple screen sizes.
- Frontend: Next.js (React Framework)
- Backend: Node.js (with Socket.IO)
- Real-Time Communication: WebRTC
- Styling: Tailwind CSS
- Node.js (>= 14.x)
- npm (>= 6.x) or yarn
-
Clone the repository:
git clone https://github.com/marufk21/streamtalk.git
-
Navigate to the project directory:
cd streamtalk -
Install the dependencies:
npm install
or
yarn install
-
Start the development server:
npm run dev
-
Open your browser and navigate to:
http://localhost:3000 -
Ensure your backend Socket.IO server is running on the correct port for signaling.
- /pages: Next.js pages, including the home and video call pages.
- /components: Reusable React components, like video call UI.
- /server: Backend server handling signaling (Socket.IO).
- /public: Static assets like icons or images.
- A user initiates or joins a call, and a signaling connection is established via Socket.IO.
- WebRTC handles the exchange of media streams (audio/video) directly between peers.
- ICE Candidates and SDP (Session Description Protocol) are used to negotiate the connection and media formats.
The signaling server is now integrated into the Next.js API routes. Socket.IO runs automatically when you start the Next.js development server. The Socket.IO server runs on port 3000 by default.
You can deploy StreamTalk on platforms like Vercel (for Next.js apps) and use a backend for the signaling server (e.g.Render).
- Deploy the Next.js app on Vercel.
- Deploy the signaling server (e.g., Node.js with Socket.IO) separately on any Node-compatible platform.
Feel free to contribute to StreamTalk by submitting pull requests or issues. Your feedback and improvements are welcome!
This project is licensed under the MIT License.