Skip to content

Service where movies are downloaded to the server via BitTorrent and streamed to the client (browser). React / Node.js Express / MongoDB.

Notifications You must be signed in to change notification settings

kimsappi/hypertube

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

Service that allows user to browse and search for movies, initiate their downloading to the server (via BitTorrent), and view the movie while it's downloading (with subtitles in the user's preferred language, if available).

Made with @Gamala, @josiz & @timohive.

Instructions

git clone https://github.com/kimsappi/hypertube
cd hypertube
# Edit backend/src/config.secret.sample with correct values
# At the very least MONGODB_URI is required for any kind of functionality
npm run install-all
npm run dev

After that, a browser tab should open at http://localhost:3000 (with the backend at :5000). If you wish to change the ports or host this somewhere, frontend/src/config must be edited with the correct SERVER_URL and backend/src/config.public.json with the correct CLIENT_URL.

NB some of the tests are knowingly broken.

So, how can I use it?

This project will not be deployed on the web because of its 'questionable' legality, so here are some screenshots instead.

Front page Search Movie details Movie stream view

Features/requirements

Tech

  • Firefox and Chrome compatibility
  • Layout: header, body, footer
  • Mobile-friendly layout
  • No errors, warnings or logs

Security

  • Password encryption
  • XSS prevention => React
  • Form data must be validated
  • Disallow uploading unwanted content
  • SQL injection prevention => NoSQL/Mongoose + sanitiser

User

  • Registration with email, username, first & last names, password (reasonably complex)
  • Authentication must be possible via 42 API and another Oauth API
  • 'Forgot password' feature (email)
  • Ability to log out in 1 click from any page
  • Ability to choose a preferred language (English by default)
  • Modify email address, profile picture and other info
  • Browse the profiles of other users (email must not be shown)

Search

  • Search must be conducted on 2 torrent listing sites
  • Search must be limited to videos
  • Must be able to suggest the most popular videos from the sources before a search query is performed (criteria can be downloads, peers, seeders...)
  • Thumbnails of videos must be shown
  • Results must be sorted by name
  • Thumbnail must include production year, IMDb 'note' (score?) (Try to make sense of this: 'In addition to the name of the video, a thumbnail must be composed, if available, of its production year, its IMDb note and a cover image.)')
  • Previously watched videos must be labeled
  • Results must be paginated, pagination must be through AJAX (infinite scroll / buttons possibly allowed?)
  • Results must be sortable and filterable by name, genre, IMDb score, production year, ...

Video

  • Display summary, main cast (producer, director, stars), year, length, IMDb score, 'cover story'(????)
  • Videos must be commentable
  • If file does not exist on the server, download must be initiated
  • Streaming must start when download is far enough that user won't need to buffer
  • Videos not watched in the last month must be deleted
  • English subtitles must be downloaded if available
  • If movie is not in user's preferred language, subtitles will need to be downloaded
  • If video is not mp4 or webm, it must be converted on the server (at least mkv support is required)

About

Service where movies are downloaded to the server via BitTorrent and streamed to the client (browser). React / Node.js Express / MongoDB.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 85.9%
  • CSS 13.1%
  • HTML 1.0%