Skip to content

Streaming Web application that allows the user to search, watch, comment videos. The player will be directly integrated to the site, and the videos will be downloaded through the BitTorrent protocol and streamed with 'fs' module of NodeJS.

Notifications You must be signed in to change notification settings

alex2011576/Hypertube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

❗️Important Notice

This school project has been created for the purpose of learning technologies and streaming techniques.
Our team strongly opposes piracy and any illegal activities.
Therefore, we kindly request that you refrain from downloading and using the content of this repository.
It is meant to be open to the public solely for showcasing the results of our project.
Thank you for your understanding.

Hypertube

Landing

  1. Stack
  2. Restrictions and rules of the assignment
  3. How to run locally
  4. Content

Short description

A team project, implemented as a part of the Hive Helsinki coding school web-branch.

The streaming web application allows users to search for, watch, and comment on videos. Users can sort and filter search results by various criteria and genres. The player is integrated into the site, and movies are downloaded using the efficient BitTorrent protocol to ensure seamless streaming once enough data has been downloaded.

The application is also multilingual, with all pages and messages translated into English, Swedish, and Russian. Additionally, movie subtitles are downloaded for each language (if available), and the default subtitle track language is set based on the user's selected language. The app aims to provide a user-friendly and accessible experience.

Team members: Aleksei, Ilona & Cong

Stack

Backend:

  • TypeScript
  • Node.Js (Express)
  • PostgreSQL
  • Jest

Frontend:

  • TypeScript
  • React
  • Material UI

Restrictions and rules of the assignment

  • Application should support multiple language selection
  • No security breaches allowed
  • Code cannot produce any errors, warnings or notices either from the server or the client side in the web console.
  • Libraries that are used to create a video stream from a torrent, thus limiting the educational purpose of the project are forbidden. (ex. webtorrent, pulsar and peerflix)
  • Compatibility at least with Firefox (>= 41) and Chrome (>= 46)
  • Responsive layout
  • All the forms must have correct validations.

How to run locally

Go to the server directory:

cd server

Prepare database:

docker-compose up -d

To run backend:

  1. Install dependencies:
    npm install
  2. Insert .env file (we wont provide its content here)
  3. Migrate   npm run migrate-up
  4. Start the server:
    npm run dev

To run frontend:

  1. Go to the client directory:
    cd ../client
  2. Install dependencies:
    npm install
  3. Start the client with:
    npm start

Tests:

npm run test

Content

Registration and Signing-in:

Users can register and activate their account through email, and reset their password by requesting a reset link via email.
Two OAuth strategies (42 and GitHub) are available for easy registration and login.
Users can choose their preferred language during registration, which will serve as the default language for their account.
They can change their language preference and other user information, including email, password and profile picture, on the profile settings page.

Signup.mov

Movie library

The movie list is initially sorted by popularity, based on download count.
Users can search for a specific movie by entering a query term in the search field and pressing enter.
Additionally, users can filter the list by genre and sort it by title, rating, production year, or download count, and even reverse the order.

Each movie thumbnail displays the movie's title, a summary of the plot, IMDb rating, and the production year (if available).

Movies.mov

Movie

The movie page is a comprehensive source of information about the film, including its title, rating, plot, country of origin, year of release, as well as the names of the cast and director. Users can also leave a review to share their thoughts and opinions about the movie.

To improve the viewing experience, the movie page offers subtitles in three languages - Russian, Swedish, and English - that users can switch based on their preference. Additionally, users can select the quality of the movie they want to watch.

Once the user clicks on the play button, the video will start downloading immediately, and streaming will begin as soon as enough data has been downloaded to ensure a seamless viewing experience. It's worth noting that any movie that has not been played for more than 30 days will be automatically removed from the server.

Screen.Recording.2023-03-03.at.12.13.28.mov

About

Streaming Web application that allows the user to search, watch, comment videos. The player will be directly integrated to the site, and the videos will be downloaded through the BitTorrent protocol and streamed with 'fs' module of NodeJS.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages