Real-time Video Calling Application powered by Next.js and FastAPI
SyncWave is a lightweight, high-performance video calling application. It uses WebRTC for peer-to-peer video streaming and FastAPI WebSockets for efficient signaling.
- Real-time Video & Audio: Low latency peer-to-peer communication.
- Instant Connection: Uses WebSockets for immediate signaling.
- Modern UI: Built with Next.js and Tailwind CSS.
- No Sign-up Required: Drop into a room and start chatting.
- Frontend: Next.js 15, React 19, Tailwind CSS, Lucide Icons, Simple-Peer.
- Backend: FastAPI, Uvicorn, Python WebSockets.
Follow these steps to get the application running locally on your machine.
Ensure you have the following installed:
The backend handles the WebSocket signaling server.
# Navigate to the backend directory
cd back
# Install dependencies
pip install -r requirements.txt
# Start the server (runs on port 8000)
python main.pyThe backend will start at
ws://localhost:8000/ws
The frontend is the user interface for the video call.
# Open a new terminal and navigate to the frontend directory
cd front
# Install dependencies
npm install
# Start the development server
npm run devThe frontend will be available at
http://localhost:3000
- Start the Backend and Frontend servers as shown above.
- Open your browser and go to
http://localhost:3000. - Click "Start Call" to enter the room.
- Open a second tab (or a different browser/incognito window) and go to
http://localhost:3000/room. - You should see "Peer joined" and the video streams connecting! π₯
- Black Video?: Make sure you have granted camera/microphone permissions to the browser.
- Connection Failed?: Ensure the backend is running (
python main.py) and is accessible. - Issues on simple-peer?: This implementation uses
simple-peerwhich relies on WebRTC. Ensure you are not behind a restrictive firewall for local testing.
syncwave/
βββ back/ # FastAPI Backend
β βββ main.py # WebSocket Server
β βββ requirements.txt
βββ front/ # Next.js Frontend
β βββ app/ # App Router
β βββ components/ # React Components
β βββ public/
βββ README.md
Made with β€οΈ by SyncWave Team