WatchParty is a real-time collaborative video streaming platform that allows users to watch videos together in perfect sync. Whether you're hosting a movie night or sharing a playlist with friends, WatchParty keeps everyone on the same second of the video while offering live chat and interactive features.
-
Real-Time Video Sync: Play, pause, and seek events are synchronized instantly across all connected clients.
-
Multiple Sources: Supports YouTube, Vimeo, SoundCloud, Twitch, and more (via
react-player). -
Live Chat: Real-time messaging with Typing Indicators ("Alice is typing...").
-
Room System: Create private rooms or join the general lobby.
-
Host Privileges:
-
The room creator (or assigned Host) controls the playback.
-
Host can grant/revoke control to other users.
-
Collaborative Playlist: Users can add videos to a shared queue.
-
User Management: Live list of online users with visual badges for Hosts.
-
Authentication: Google OAuth integration and custom JWT authentication.
-
Responsive Design: Fully optimized for Desktop, Tablet, and Mobile devices.
- Framework: React (Vite)
- Styling: Custom CSS with CSS Variables (Dark Theme)
- State/API: Axios, React Hooks
- WebSocket: Native
WebSocketAPI for low-latency communication
- Language: Go (Golang)
- Library:
gorilla/websocket - Role: Handles ephemeral state, broadcasting sync events, chat, and typing signals.
- Framework: Django (Python)
- Database: PostgreSQL (Production) / SQLite (Dev)
- Role: Handles user authentication, video metadata persistence, and room management.
- Frontend: Firebase Hosting
- Backends: Google Cloud Run (Containerized)
- CI/CD: GitHub Actions
Follow these instructions to set up the project locally.
- Node.js (v18+)
- Go (v1.20+)
- Python (v3.10+)
- Docker (Optional, for containerized run)
git clone https://github.com/yourusername/WatchParty.git
cd WatchParty
This service handles authentication and the database.
cd backend-python
# Create virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run migrations & start server
python manage.py migrate
python manage.py runserver 0.0.0.0:8000
This service handles the WebSockets.
# Open a new terminal
cd backend-go
# Run the server
go run .
# Server will start on localhost:8080
The user interface.
# Open a new terminal
cd frontend/wpfe
# Install dependencies
npm install
# Start Development Server
npm run dev
Visit http://localhost:5173 in your browser.
Create a .env file in frontend/wpfe if you need to override defaults:
VITE_API_URL=http://localhost:8000
VITE_WS_URL=ws://localhost:8080
Ensure your Django settings.py allows CORS for your frontend URL.
Contributions are welcome!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
Your Name - uddeshsingh@gmail.com
Project Link: Live