This Web Application Allows A user to upload a two minutes Video. It uses Server Side Capabilities of Nodejs and Spring Boot .

Overview

Logo

VideoStreamingApplication

Purpose Of This Application

These days trend of short videos are on rise youtube recently realsed "Shorts" . So , taking inspiration from Youtube Shorts I decided to make this application which will allow user to upload 120 secs video . Unlike Tik-Tok This Application is going to be targeted more towards educational and travel content ( FireShip.io is the living example that educational videos don't need to be long to make it's point)

Tech Stack

This Project uses uses Server Side Capabilities of Nodejs and Spring Boot.
Reasons To Use ->

  1. Java for All Kinds of Upload and Conversion Of videos to Different Resolution Process as this process is CPU intensive.So,it's better to handle it in Java.
  2. Nodejs for Playback , Authentication-Authorization as these are just some simple I/O operations which NodeJs is pretty good at.

Updates :

  • Added Redis Support For Verifying JWT's origin ( By Storing IP of the logged in user in redis cache memory and matching it up during subsequent Requests)

Backend Architecture / System's Design

System's Design

End Points

End Point Port Number HTTP Method Description Required User registration
/video/upload 8080 POST To Upload Videos Yes
/video/details 8080 POST To associate Detail of Video uploaded Yes
/video/thumbnailUpload 8080 POST To Upload Thumbnail Yes
/video/delete/:videoID 8080 DELETE To Delete Uploaded Videos and thumbnail corresponding to it Yes
/video/fetch 8000 GET To Fetch All Available Videos No
/video/thumbnail/:id 8000 GET To Fetch thumbnail associated with a video No
/video/user/registration 8000 POST To register the user No
/video/user/login 8000 POST for User Login returns jwt in response No
/video/search/:keyword 8000 GET For Video Search No
/video/playback/:id 8000 GET For Video Playback Yes
/video/like/:id 8000 POST For Liking The Video Yes
/video/dislike/:id 8000 POST For Dis-Liking The Video Yes

Different Models

- User Registration Model ( To Pass in the Body of the API)

username*
password
firstName
lastName
email*
countryOfUser
role
Here * signify that those fields need to be unique.

- Video Details Model ( To Pass in the Body of the API)

fileName*
videoLength*
titleOfVideo
captionOfVideo
uploadTime*
genreOfVideo
Here * signify that You Will Receive it as response if uploaded video is going to be of required criteria.

- Video Details Model ( To Pass in the Body of the API)

thumbnailName (same as name of the Video Generated)
videoID
thumbnailExtension

Things Needed To Be Implemented In Future

  • Authentication-Authorization
  • The One who has uploaded can delete the videos
  • Adding Likes And DisLikes
  • JWT's Origin Verification
  • User Interface
  • Handling Some Exceptions
  • Ability To Add Comments.
  • OAuth Authentication
  • Need To Add Web Server ( like Nginx ) which supports Reverse Proxy

Issues

  1. Thumbnail Uploaded isn't getting converted to lower resolution.

Things to be taken care of before starting the project on your local computer.

  1. Setup the local MongoDB server with VideoStreamingApplcation Database.
  2. Make Sure that you have downloaded the current version of FFMPEG and make sure you have changed the path .
  3. Make sure that you have changed the Input and Output file destination of the video that will be converted into different resolutions.
If you are a front-end developer pls go through different controller classes to learn about different responses and requests.
You might also like...

Spring Boot JdbcTemplate example with SQL Server: CRUD Rest API using Spring Data JDBC, Spring Web MVC

Spring Boot JdbcTemplate example with SQL Server: Build CRUD Rest API Build a Spring Boot CRUD Rest API example that uses Spring Data Jdbc to make CRU

Dec 20, 2022

100+ Spring Boot Articles, Tutorials, Video tutorials, Projects, Guides, Source code examples etc

YouTube Channel - Spring Boot Tutorial Subscribe for future video and updates Spring Boot Tutorial on YouTube Newly published spring boot tutorials (2

Jan 2, 2023

💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

💡极致性能的企业级Java服务器框架,RPC,游戏服务器框架,web应用服务器框架。(Extreme fast enterprise Java server framework, can be RPC, game server framework, web server framework.)

👉 为性能而生的万能服务器框架 👈 Ⅰ. zfoo简介 🚩 性能炸裂,天生异步,Actor设计思想,无锁化设计,基于Spring的MVC式用法的万能RPC框架 极致序列化,原生集成的目前二进制序列化和反序列化速度最快的 zfoo protocol 作为网络通讯协议 高可拓展性,单台服务器部署,

Jan 1, 2023

A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduling and validation capabilities

Aerie A suite of software tools and services created to support activity planning and sequencing needs of missions with modeling, simulation, scheduli

Jan 3, 2023

Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login and Registration example with MySQL, JWT, Rest Api - Spring Boot Spring Security Login example

Spring Boot Login example with Spring Security, MySQL and JWT Appropriate Flow for User Login and Registration with JWT Spring Boot Rest Api Architect

Jan 5, 2023

The goal of the project is to create a web application using Java EE and database (PostgreSQL) without connecting a modern technology stack like spring boot and hibernate

The goal of the project is to create a web application using Java EE and database (PostgreSQL) without connecting a modern technology stack like spring boot and hibernate

About The Project SignIn page SignUp page Profile page The goal of the project is to create a web application using Java EE and database (PostgreSQL)

Mar 23, 2022

There are two challenges one is to create a backend api the other is to create a frontend application to consume the public data api devall.

There are two challenges one is to create a backend api the other is to create a frontend application to consume the public data api devall.

Sobre | Desafio | Resolução | Tecnologias | Execução | Itexto desafio tecnico Sobre os Desafios existem dois desafios um é criar uma api backend o out

Oct 18, 2021

How to configure Replica Set with Embedded Mongo using Spring Boot and Flapdoodle for unit testing code that uses mongodb transactions

Spring Boot Embedded Mongo with Replica Set This project defines a basic rest service that allows users to update records of a Person (name and email)

Nov 1, 2022

An implementation of a sample E-Commerce app in k8s. This online retail marketplace app uses Spring Boot, React, and YugabyteDB.

An implementation of a sample E-Commerce app in k8s. This online retail marketplace app uses Spring Boot, React, and YugabyteDB.

An implementation of a sample E-Commerce app in k8s. This online retail marketplace app uses Spring Boot, React, and YugabyteDB.

Oct 27, 2022
Owner
Prateek Kumar
2nd Year Under-Grad. Knows Java And Nodejs. Interested In Backend Development. currently Learning Cloud Computing And Polishing DSA Skills.
Prateek Kumar
Tuya 37 Dec 26, 2022
Two Spring-boot applications registering themselves to an spring-boot-admin-server application as separate clients for the purpose of monitoring and managing the clients

Spring-boot-admin implementation with 1 Server and 2 clients Creating a Server application to monitor and manage Spring boot applications (clients) un

null 6 Dec 6, 2022
该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的线上博客项目/企业大型商城系统/前后端分离实践项目等,摆脱各种 hello world 入门案例的束缚,真正的掌握 Spring Boot 开发。

Spring Boot Projects 该仓库中主要是 Spring Boot 的入门学习教程以及一些常用的 Spring Boot 实战项目教程,包括 Spring Boot 使用的各种示例代码,同时也包括一些实战项目的项目源码和效果展示,实战项目包括基本的 web 开发以及目前大家普遍使用的前

十三 4.5k Dec 30, 2022
In this project, we will implement two Spring Boot Java Web application called, streamer-data-jpa and streamer-data-r2dbc.

In this project, we will implement two Spring Boot Java Web application called, streamer-data-jpa and streamer-data-r2dbc. They both will fetch 1 million of customer's data from MySQL and stream them to Kafka. The main goal is to compare the application's performance and resource utilization.

Ivan Franchin 6 Nov 2, 2022
The application consists of a web page with a list of some movies. The page allows user interaction through ratings of movies listed in the web app.

DSMovie About the project https://matheus-maia-alvarez-dsmovie.netlify.app/ DSMovie is a full stack web and mobile application built during the Spring

Matheus Maia Alvarez 6 Jul 21, 2022
Create your Java crypto trading bot in minutes. Our Spring boot starter takes care of exchange connections, accounts, orders, trades, and positions so you can focus on building your strategies.

Quick Start | Documentation | Discord | Twitter Create and run your java crypto trading bot in minutes Our Spring boot starter takes care of exchange

Cassandre 442 Jan 3, 2023
循序渐进,学习Spring Boot、Spring Boot & Shiro、Spring Batch、Spring Cloud、Spring Cloud Alibaba、Spring Security & Spring Security OAuth2,博客Spring系列源码:https://mrbird.cc

Spring 系列教程 该仓库为个人博客https://mrbird.cc中Spring系列源码,包含Spring Boot、Spring Boot & Shiro、Spring Cloud,Spring Boot & Spring Security & Spring Security OAuth2

mrbird 24.8k Jan 6, 2023
Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes

Cloud Native and Low Code Platform to create FullStack web Admin applications in minutes ✨ Features & Technologies REST API generator Low Code CRUD &

Gemini Framework 171 Dec 26, 2022
EssentialClient is a client side mod originally forked from Carpet Client for 1.15.2 that implements new client side features

EssentialClient EssentialClient is a client side only mod originally forked from Carpet Client for 1.15.2 that implements new client side features. Th

null 62 Jan 3, 2023
These samples explore the different options that Spring Boot developers have for using Javascript and CSS on the client (browser) side of their application.

Table of Contents Getting Started Narrowing the Choices Create a New Application Webjars Show Me Some Javascript Normalizing Resource Paths Adding Tab

Dave Syer 18 Jul 29, 2022