DEV Community

Cover image for Video Party - My submission for #dohackathon
Varun Gujarathi
Varun Gujarathi

Posted on

Video Party - My submission for #dohackathon

What I built

A web-based application that provides a platform to watch downloaded .mp4 videos with your peers.

If you have a .mp4 video stored locally on your PC/laptop, and you wanna watch it with your friends, colleagues, or family, you can use this application stream video in a peer to peer fashion.

Category Submission:

Random Roulette

App Link

https://local-video-party-client-w9cuc.ondigitalocean.app/
OR
https://videoparty.tk

Screenshots

Home page

Login page

Joinee lobby

Creator lobby

Description

Video party is a platform where you can watch pre-downloaded videos with your friends in sync and chat while waiting in the lobby. It uses a peer-to-peer library to stream videos.

Link to Source Code

Client - https://github.com/varungujarathi9/Local-Video-Party-Client
Server - https://github.com/varungujarathi9/Local-Video-Party-Server

Permissive License

MIT License

Background

While I joined my new job in Sept 2020, I made some new friends. Gradually we started playing online games, chatting, etc. One thing that struck my mind was there was no platform where we could watch downloaded video files (.mp4) together. Thus we started working on this app.

How I built it

(How did you utilize DigitalOcean’s App Platform? Did you learn something new along the way? Pick up a new skill?)
I was very new to Digital Ocean's App Platform, slowed a gained a grip on it. It reduces to Ops work and lets developers focus on the important parts. The auto-deployment feature was very helpful.

We learned lots of new technologies such as WebSockets & WebRTC, etc.

Technologies that we used were

  • WebSockets
  • WebRTC
  • ReactJS
  • HTML/CSS/JS/Bootstrap
  • Python - Flask & Gunicorn
  • Docker
  • Nginx

Flow:

  • An user creates room by entering a username from the home page
  • Create room functionality generates a unique room with an I.D. which can be used by other users either by join room option or by opening the invite link in the browser
  • All the users can chat while in the lobby
  • Original creator has access to select a file that is to be streamed
  • All users can watch the streamed media file(.mp4) in sync

Additional Resources/Info

WebRTC - https://www.npmjs.com/package/simple-peer
Python FlaskSocketIO - https://flask-socketio.readthedocs.io/en/latest/
ReactJS - https://reactjs.org/tutorial/tutorial.html

Top comments (0)