Watch videos together, in sync, from anywhere.
VideoSync is a real-time video synchronization platform that lets you watch videos with others, with all interactions—like play, pause, and skip—perfectly synced across everyone in the room. It also includes a chat feature so you can discuss what’s on screen as it happens. Whether you’re hosting a movie night, sharing a family video, or studying with classmates, VideoSync makes it feel like you’re all together, no matter the distance.
Have you ever wanted to watch a pre-recorded video—like a movie, a family memory, or a study session—with friends or family far away, as if it were live? Normally, you’d struggle to keep everyone in sync, with awkward pauses or mismatched timing ruining the experience. VideoSync fixes this by syncing every second of the video for all users in real-time, complete with a chat feature to talk about it as you watch—whether it’s a private group or a public event anyone can join.
- Upload & Schedule: Upload a video, set a date and time, and choose if it’s public or private.
- Public or Private Access:
- Public: Anyone can request to join, pending host approval.
- Private: Only invited users can participate.
- Invite Users: Search for people by name or email and send them invites to your video room.
- Synchronized Watching: Everyone sees the same moment of the video—play, pause, or skip, and it updates for all in real-time.
- Real-Time Chat: Chat with everyone in the room, keeping discussions tied to what’s on screen.
- Frontend: React, Tailwind CSS
- Backend: Spring Boot, Spring WebSocket, Spring JPA, Spring Security
- Database: MySQL
Here’s VideoSync in action!
Upload.-.Made.with.Clipchamp.mp4
Invite.-.Made.with.Clipchamp.mp4
Sync.Watching.mp4
Want to try VideoSync locally? Here’s how:
- Node.js & npm (v16+)
- Java JDK 17+
- Maven
- MySQL (v8+)
- Google OAuth credentials (Google Cloud Console)
bash git clone https://github.com/MohammedAymanKhan/VideoSync.git
-
Spring Boot Setup
- All dependencies are already included.
- Simply reload Maven/Gradle in your IDE to resolve them.
-
Frontend (React + TailwindCSS)
- Navigate to the React app folder:
cd frontend npm install npm run dev
- Navigate to the React app folder:
-
Google OAuth (Authentication)
- Configure your
application.propertieswith:spring.security.oauth2.client.registration.google.client-id=YOUR_GOOGLE_CLIENT_ID spring.security.oauth2.client.registration.google.client-secret=YOUR_GOOGLE_CLIENT_SECRET
- Configure your
-
Database Setup
- Update
application.propertieswith your DB credentials:spring.datasource.url=jdbc:mysql://localhost:3306/YOUR_DB_NAME spring.datasource.username=YOUR_USERNAME spring.datasource.password=YOUR_PASSWORD
- Update
You're now ready to run the app! 🎉
This project is licensed under the MIT License - see the LICENSE file for details.