# YouTube Clone Assignment
## Overview
In this assignment, you will build a simplified version of YouTube using React. This project will test your understanding of React components, props, lists, keys, state management, and event handling.
## Task
Create a YouTube-like application that displays videos, allows searching and filtering, and handles user interactions.
## Requirements
### 1. Components and Props
- Create the following components:
- `Header` component with search functionality
- `VideoList` component to display multiple videos
- `VideoCard` component to show individual video information
- `Sidebar` component for category navigation
- `VideoPlayer` component to show detailed video view
- Use props to pass data between components
- Implement proper prop validation
### 2. Lists and Keys
- Display a list of videos using the provided data
- Use unique keys for each video in the list
- Implement category lists with appropriate keys
### 3. State and Events
- Manage application state for:
- Currently selected video
- Search queries
- Selected category
- User interactions (likes, subscriptions)
- Create event handlers for:
- Video selection
- Search filtering
- Category selection
- Like/dislike functionality
- Subscribe button interactions
## Data
Use this sample data for your application:
```javascript
const videos = [
{
id: 1,
title: "Learn React in 30 Minutes",
thumbnail: "react-thumbnail.jpg",
channel: "CodeMaster",
views: "245K",
timestamp: "3 weeks ago",
description: "Learn the basics of React in this comprehensive tutorial.",
category: "programming"
},
{
id: 2,
title: "10 JavaScript Tricks You Should Know",
thumbnail: "js-tricks-thumbnail.jpg",
channel: "WebDev Pro",
views: "500K",
timestamp: "2 months ago",
description: "Advanced JavaScript techniques to improve your coding.",
category: "programming"
},
{
id: 3,
title: "Build a Netflix Clone with React",
thumbnail: "netflix-clone-thumbnail.jpg",
channel: "ReactNinja",
views: "1.2M",
timestamp: "8 months ago",
description: "Step-by-step guide to building a Netflix clone with React.",
category: "project"
},
{
id: 4,
title: "CSS Grid Layout Tutorial",
thumbnail: "css-grid-thumbnail.jpg",
channel: "CSSWizard",
views: "320K",
timestamp: "5 weeks ago",
description: "Master CSS Grid layouts for responsive web design.",
category: "styling"
},
{
id: 5,
title: "React Hooks Explained",
thumbnail: "hooks-thumbnail.jpg",
channel: "ReactMaster",
views: "780K",
timestamp: "4 months ago",
description: "In-depth explanation of React Hooks with examples.",
category: "programming"
}
];
const categories = ["All", "Programming", "Styling", "Project", "Design"];
```
## Implementation Steps
1. **Set up your React project**
- Create a new React application using Create React App or Vite
2. **Create components**
- Build each of the required components with proper structure
- Implement component hierarchy with App as the main component
3. **Implement video listing**
- Display videos in a grid layout
- Each video should show thumbnail, title, channel, and view count
- Use proper keys for each video item
4. **Add video selection**
- When a video is clicked, show the detailed view
- Implement a way to close the detailed view and return to the grid
5. **Add search functionality**
- Create a search input in the Header
- Filter videos based on search term in title or channel name
6. **Implement category filtering**
- Show categories in the Sidebar
- Allow filtering videos by selected category
7. **Add user interactions**
- Implement like/dislike functionality
- Add subscribe button with toggle state
- Include view counts and timestamps
8. **Style your application**
- Create a responsive layout that resembles YouTube
- Style components to match a video platform interface
## Evaluation Criteria
Your assignment will be evaluated based on:
1. **Component Structure**: Proper organization and composition of components
2. **Props Usage**: Effective passing and handling of props
3. **List Rendering**: Efficient rendering with appropriate keys
4. **State Management**: Proper use of state for UI updates
5. **Event Handling**: Correct implementation of event handlers
6. **Functionality**: All features working as expected
7. **Code Quality**: Clean, organized code following best practices
8. **UI/UX**: Pleasant and responsive user interface
## Bonus Challenges
For extra credit, implement any of these features:
1. Dark/light mode toggle
2. Comments section for videos
3. Watch history feature
4. Video recommendations
5. Responsive design for mobile devices
## Submission Guidelines
1. Create a GitHub repository for your project
2. Include a README with:
- Setup instructions
- Features implemented
- Screenshots of your application
3. Submit the GitHub repository link
4. Deploy your application (optional) using services like Netlify or Vercel
Good luck with your YouTube Clone project!