/Video-Streaming-Service

This is a fullstack web application built using the Spring framework, Angular, and MongoDB. It allows users to share videos and photos with others.

Primary LanguageTypeScript

YouTube logo

Video-Streaming-Service


The goal of this project was to deepen my knowledge of Java and Spring framework, learn frontend framework like Angular and to try to build a fullstack application.

🚫⚠️ Disclaimer

To run this application, you can download Docker and execute it. However, please note that you need to set up your own AWS Cloud credentials and Auth0 configuration. This is necessary for the application to function correctly.

You will need to provide the following:

AWS Cloud Credentials

  • AWS_ACCESS_KEY_ID: Your AWS access key ID.
  • AWS_SECRET_ACCESS_KEY: Your AWS secret access key.

Auth0 Configuration

  • AUTH0_USERINFOENDPOINT: The endpoint URL for Auth0 user information.
  • SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI: The issuer URI for JWT tokens from Auth0.

These settings are required for the application's authentication and authorization.

🧐 About

This application recreates basic functionality of a YouTube application.
When user starts the application he will see a home screen of videos.

home.png

He can then of course watch this video. With full experience.
User can subscribe to the author of the video. Like (or dislike) this video and leave a comment.

video-details.png

Before that he must login into the application.

auth0.png

After watching a few videos user can look into his video history as well to his liked videos or check users he is subscribed to.

liked.png

And if the user also wants to share his own videos he can do so.

liked.png liked.png

🏗️ Architecture

This is a high level diagram of my application

diagram.png

User interacts with the frontend part which sends and receives request from Spring REST API. The Server side communicates with database (it saves metadata there) and saves the actual images and videos to cloud. Also user authentication is implemented from the frontend and backend.

🗃️ Database

User model:
user_model.png
Video model:
video_model.png Comment model:
comment_model.png

⛏️ Built Using

  • Angular
  • Spring
  • Spring Boot
  • MongoDB