This project is my implementation of YouTube for some important features created with React, Tailwind CSS, Redux Toolkit, React Router DOM, and the YouTube API. The goal of the project was to replicate the look and feel of the YouTube user interface while incorporating additional features to enhance the user experience.
The user interface is designed to closely resemble the YouTube platform, providing a familiar and intuitive experience for users. Modern UI designs are also incorporated like light and dark theme.
The application is fully responsive, ensuring compatibility with various devices and screen sizes. This particular feature is currently under development.
Shimmer effects are implemented to enhance the user experience, providing a polished and visually appealing loading experience.
Infinite scrolling is incorporated to optimize user engagement, allowing seamless navigation through video content.
- Live Suggestions: As users type in the search bar, live suggestions are fetched from the YouTube API, offering real-time feedback.
- Debouncing: The search functionality uses debouncing to manage the number of API calls, improving performance and reducing unnecessary requests.
- Caching: Previous search suggestions are stored in the cache using Redux Toolkit, minimizing duplicate API calls.
A sophisticated comment system, inspired by Reddit, is implemented, allowing users to engage in discussions at various levels.
Users can participate in live chat-like discussions, where comments are loaded using API polling. The size of chats is limited to prevent page freezing and ensure a smooth user experience. This particular feature is currently under development.
- React: Building the user interface and managing the application state.
- Tailwind CSS: Styling the components with a utility-first CSS framework.
- Redux Toolkit: State management for caching, handling search suggestions, and managing comments.
- React Router DOM: Navigating between different pages within the application.
- YouTube API: Fetching video data, search suggestions, and chat comments.
To run the project locally, follow these steps:
- Clone the repository.
- Install dependencies using
npm install
. - Start the development server with
npm start
.
Feel free to explore the codebase and contribute to the project!