Due to the current COVID-19 situation, everyone is stuck at home. Fortunately, we can still browse the internet and have fun playing with friends. Our group had started watching anime and movies together over discord streams, but the experience was rarely smooth. Video quality is compromised and the stream is often paused for each person, then we must restart and have someone else load the video if the streamer leaves. We wanted to make a chrome extension that will fix that, allowing everyone to watch the video together while each displaying the best quality possible.

What it does

Our chrome extension allows people to create and join rooms, following the stream of the party leader. Leadership can be passed and friends can be added, but the core of the project is that everyone's video will be in sync with the leader. When they pause/play/skip/buffer, everyone follows that timestamp. People can also go out of sync to rewatch moments on their own and then resync when they want to.

How we built it

The hack is a chrome extension written in javascript. The frontend was created using HTML and Vue.js, along with MongoDB as a persistent database. NodeJS was used in the backend and is hosted on a digital ocean server, to allow people to join rooms. Firebase (Cloud Firestore) is used for realtime communication between the chrome extensions, and interactions between the extension and the chrome tab were handled in javascript.

Challenges we ran into

There were challenges in communication between the different parts of the hack, getting the extension to have full control over the video, lack of sleep, and getting the project to run the same on everyone's laptop. It was also extremely hard to test this application, as it takes multiple people for a proper test, and debugging requires tracing print statements from laptop to laptop.

Accomplishments that we're proud of

This project had multiple firsts for us as it was the first time we created a chrome extension, first time using node.js and first time using digital ocean. We are very happy with the outcome and will probably be using this extension.

What we learned

Even the simplest ideas can be very challenging to implement. The extension was unexpectedly one of the most difficult projects we've worked on. We weren't able to sleep but we did learn a lot more about chrome extensions.

What's next for OmniSyncr

Honestly, we're looking forward to trying this out in our discord.

-- The original demo was rushed because we found a bug with redirecting very close to the deadline. It was all in one take so please contact us for any clarifications, it's here We retook it after fixing nithin's internet.

Share this project: