Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sandesh300/youtube-clone

YouTube-Clone web application
https://github.com/sandesh300/youtube-clone

angular aws java javascript mongodb oauth2 rest-api spring-boot spring-mvc spring-security-jwt

Last synced: about 12 hours ago
JSON representation

YouTube-Clone web application

Awesome Lists containing this project

README

        

# Youtube-Clone
We did a project on creating an interactive YouTube clone web application. This is the video
streaming application. It's a main purpose is to provide a platform for the users to upload
videos, like and dislike videos and comments on videos, user can also subscribe to other
users to receive update about their future videos.

## Technologies Used -
### Java and SpringBoot:
Utilized for the backend server and handling server-side logic, providing a robust and scalable backend foundation.
### Angular:
Used for the frontend to create a dynamic and interactive user interface, enhancing user experience.
### MongoDB:
Chosen as the database to store user data, video details, comments, likes, and other relevant information due to its flexibility and scalability for handling large amounts of unstructured data. n
### Auth0:
Played a crucial role in ensuring secure authentication and authorization, enhancing the project's security and user account management.
### AWS:
Leveraged for hosting and deploying the application, ensuring high availability, scalability, and reliable performance.

## Features -
1. User can Upload new Videos.
2. User can Upload Thumbnails for the Videos.
3. User can View Videos.
4. User can Like/Dislike a Video.
5. User can Subscribe to another User, to receive updates about future videos.
6. User can Login/Logout using Single Sign On using auth0 .
7. User can comment on Videos.
8. User can view the History of Videos watched.
9. User can view the List of Videos Liked.

## Frontend Architecture -
We have implemented a Component Oriented Architecture in our Angular application, which means, we try to divide each meaningful element, into a different component, in that way, we can re-use the components across different places.

## Backend Architecture -
In Spring Boot REST API, we have followed a standard 3-Layer architecture:

### 1 - Controller :
handles client requests.
### 2 - Service Layer :
contain business logic.
### 3 - Persistence Layer :
deal with data storage.

We have exposed the REST API and maintain it separately in a Controller Layer, this layer is only deal with receiving REST calls from the clients, validating whether the requests are valid or not and then delegating the request to the Service Layer.

The Service Layer perform the actual business logic of our application, it is the core of our application. This layer not deal with storing (or) persisting of the data, this is the responsibility of the Persistence Layer.

The Persistence Layer is responsible to make sure that the objects are stored properly in the database, it is not deal with any kind of business logic.

By following this layered architecture approach, we can keep the code clean and maintainable.

## MongoDB Schema -
we maintain 3 Collections inside in the Database:
### 1. Video –
- Stores metadata related to videos, such as id, title, description, userID, likes, dislikes, tags, url, videoStatus, viewCount. comments etc.
### 2. User –
Stores metadata related to users such as id, firstName. lastName, fullName, picture, subscribedToUsers, subscribers, likedVideos, disLikedVideos etc.
### 3. Comments -
Stores metadata related to comments such as id, text, author, likeCount, disLikeCount etc.

## Modules -
### User Management -
Handles user registration, authentication, and profile management.
### Video Managemen -
Allows users to upload, view, like/dislike, comment on videos, and manage their video history and liked videos.
### Subscription Management -
Enables users to subscribe to other users and receive notifications about their new videos.
### Media Storage -
Integrates with AWS S3 to store and retrieve video files and thumbnails.

## Types of Users Involved:
### 1. Regular Users:
View, upload, like/dislike, and comment on videos, upload videos and manage their channel.
### 2. Administrators:
Manage user accounts, content moderation, and overall platform administration.

## Home Page -
![WhatsApp Image 2023-07-04 at 5 51 10 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/f99a8c66-8bf9-4641-a363-c48404063990)

## Login Page -
![WhatsApp Image 2023-07-04 at 5 51 09 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/10428e1d-e64a-4437-addf-710a9b194b28)

## Video Upload Page -
![WhatsApp Image 2023-07-04 at 5 51 09 PM (1)](https://github.com/sandesh300/YouTube-Clone/assets/92014891/fad46295-0b85-402a-be2a-10916616f2fd)

## Video Upload Page -
![WhatsApp Image 2023-07-04 at 5 51 08 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/ea6bd9b2-7adc-41f3-8a83-c0fe1ecc23a0)