{"id":18431146,"url":"https://github.com/sandesh300/youtube-clone","last_synced_at":"2025-04-13T22:57:28.639Z","repository":{"id":178601888,"uuid":"662102884","full_name":"sandesh300/YouTube-Clone","owner":"sandesh300","description":"The YouTube Clone is a full-stack app with Java, Spring Boot backend, Angular frontend, MongoDB, Auth0 authentication, and AWS storage.","archived":false,"fork":false,"pushed_at":"2024-03-11T18:06:42.000Z","size":222,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-16T09:16:53.172Z","etag":null,"topics":["angular","aws-s3","java","javascript","mongodb","oauth2","rest-api","spring-boot","spring-data-jpa","spring-mvc","spring-security-jwt"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sandesh300.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-04T11:07:34.000Z","updated_at":"2025-02-08T22:00:51.000Z","dependencies_parsed_at":"2024-03-11T19:39:05.971Z","dependency_job_id":null,"html_url":"https://github.com/sandesh300/YouTube-Clone","commit_stats":null,"previous_names":["sandesh300/youtube-clone"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandesh300%2FYouTube-Clone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandesh300%2FYouTube-Clone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandesh300%2FYouTube-Clone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sandesh300%2FYouTube-Clone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sandesh300","download_url":"https://codeload.github.com/sandesh300/YouTube-Clone/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248794571,"owners_count":21162614,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","aws-s3","java","javascript","mongodb","oauth2","rest-api","spring-boot","spring-data-jpa","spring-mvc","spring-security-jwt"],"created_at":"2024-11-06T05:23:41.143Z","updated_at":"2025-04-13T22:57:28.616Z","avatar_url":"https://github.com/sandesh300.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Youtube-Clone\nWe did a project on creating an interactive YouTube clone web application. This is the video \nstreaming application. It's a main purpose is to provide a platform for the users to upload \nvideos, like and dislike videos and comments on videos, user can also subscribe to other \nusers to receive update about their future videos.\n\n## Technologies Used -\n### Java and SpringBoot:\nUtilized for the backend server and handling server-side logic, providing a robust and scalable backend foundation.   \n### Angular:\nUsed for the frontend to create a dynamic and interactive user interface, enhancing user experience.   \n### MongoDB:\nChosen 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   \n### Auth0:\nPlayed a crucial role in ensuring secure authentication and authorization, enhancing the project's security and user account management.   \n### AWS:\nLeveraged for hosting and deploying the application, ensuring high availability, scalability, and reliable performance.  \n\n## Features -\n1. User can Upload new Videos.\n2. User can Upload Thumbnails for the Videos.\n3. User can View Videos.\n4. User can Like/Dislike a Video.\n5. User can Subscribe to another User, to receive updates about future videos.\n6. User can Login/Logout using Single Sign On using auth0 .\n7. User can comment on Videos.\n8. User can view the History of Videos watched.\n9. User can view the List of Videos Liked.\n\n## Frontend Architecture -\nWe 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.\n\n## Backend Architecture -\nIn Spring Boot REST API, we have followed a standard 3-Layer architecture: \n \n ### 1 - Controller : \n handles client requests.\n ### 2 - Service Layer :\n contain business logic.\n ### 3 - Persistence Layer : \n deal with data storage.\n\nWe 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.\n\nThe 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.\n\nThe 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.\n\nBy following this layered architecture approach, we can keep the code clean and maintainable.\n\n## MongoDB Schema -\nwe maintain 3 Collections inside in the Database:\n### 1. Video –\n- Stores metadata related to videos, such as id, title, description, userID, likes, dislikes, tags, url, videoStatus, viewCount. comments etc.\n### 2. User –\nStores metadata related to users such as id, firstName. lastName, fullName, picture, subscribedToUsers, subscribers, likedVideos, disLikedVideos etc. \n### 3. Comments -\nStores metadata related to comments such as id, text, author, likeCount, disLikeCount etc.   \n\n## Modules - \n### User Management -\nHandles user registration, authentication, and profile management. \n### Video Managemen -\nAllows users to upload, view, like/dislike, comment on videos, and manage their video history and liked videos. \n### Subscription Management -\nEnables users to subscribe to other users and receive notifications about their new videos. \n### Media Storage -\nIntegrates with AWS S3 to store and retrieve video files and thumbnails. \n\n## Types of Users Involved: \n### 1. Regular Users:\nView, upload, like/dislike, and comment on videos, upload videos and manage their channel. \n### 2. Administrators:\nManage user accounts, content moderation, and overall platform administration.\n\n## Home Page -\n![WhatsApp Image 2023-07-04 at 5 51 10 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/f99a8c66-8bf9-4641-a363-c48404063990)\n\n## Login Page - \n![WhatsApp Image 2023-07-04 at 5 51 09 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/10428e1d-e64a-4437-addf-710a9b194b28)\n\n## Video Upload Page - \n![WhatsApp Image 2023-07-04 at 5 51 09 PM (1)](https://github.com/sandesh300/YouTube-Clone/assets/92014891/fad46295-0b85-402a-be2a-10916616f2fd)\n\n## Video Upload Page - \n![WhatsApp Image 2023-07-04 at 5 51 08 PM](https://github.com/sandesh300/YouTube-Clone/assets/92014891/ea6bd9b2-7adc-41f3-8a83-c0fe1ecc23a0)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandesh300%2Fyoutube-clone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsandesh300%2Fyoutube-clone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsandesh300%2Fyoutube-clone/lists"}