
Build a YouTube clone featuring search, voice search, theme and language switching, category filters, and a hover mini player for video previews.
Create a React TypeScript project by initializing a new folder, running npm create react app with the latest template, and launching it in VS Code.
Split your terminal, install the needed plugin with npm i --save-dev, paste and run the plugin, and fix the package warning in your YouTube clone app.
Cleanup project files by converting to TypeScript, deleting app.test.tsx and logo.svg, and simplifying app.tsx to return hello react includes typescript. The next video starts the home page with styled components.
Learn to build reusable React components with styled-components, a css-in-js library, and install it with npm i styled-components for your React projects.
Create an app container in app.styles.tsx using styled components, export appContainer, and import it in app.tsx to apply a full-viewport red background for the YouTube clone UI.
Add fonts to your YouTube clone app using Google Fonts Oswalde and Roboto, update index.html in the public directory, and prepare to apply global styles.
Create global styles with styled-components createGlobalStyle, set base margins and paddings, apply Roboto and Oswald fonts with sans-serif fallback, enforce box-sizing, and hide scrollbars in the app.
Explore implementing themes in a React and TypeScript app by creating a utils theme file with light and dark color palettes, and understand type annotations and type inference in TypeScript.
Explore the any type, type inference, and type annotations in TypeScript, showing how variables become numbers or strings when assigned. Learn to annotate uninitialized variables to enable compile-time checks.
Practice type annotations in TypeScript by annotating numbers, booleans, strings, and arrays, and correct object fields while comparing types and interfaces.
Define type aliases for reusable shapes like user type and string array to improve code reusability, and use interfaces for object types, noting type annotations and inference.
Define a TypeScript interface to enforce object shapes for light and dark themes, use type annotations, and extend the item interface with a teams object using styled components.
Wrap components in a team provider to apply dark or light themes via a team key, accessed in styled components by props.team. Plan to move to a use context hook.
Discover how union types let a variable hold boolean or string values without errors, and extend with number to accommodate more types. See practical examples preventing type mismatches in TypeScript.
Explore function types in TypeScript, annotate arrow and named functions with input and return types, and learn how type inference helps catch mismatches while mapping over string arrays.
Create a React context and provider to manage a light or dark team theme, expose it via a custom hook, and wrap the app with the provider for global access.
Build a header container for a youtube clone with three sections: left, center search, and right using styled-components in a React TypeScript project, with flex layout and gaps.
Build the left header section for a YouTube clone: a home-link logo with the YouTube icon and styled text, using react-router dom, react-icons, and styled components.
Create a sign-in (auth) button and a more icon button in the YouTube clone header, embed a user circle icon, and implement a hover tooltip with React Tooltip for settings.
Create a tooltip system in a React app by mapping an array of tooltip IDs to React tooltip components, then add a settings dropdown toggle and a styled settings panel.
Build a dynamic settings container with appearance and language options, icons, and toggles. Integrate a translation dictionary and app context to switch theme and language between English and French.
Build a search bar in a React TypeScript app by creating a search component with input and icon, styling it, and connecting it to app context for global search text.
Integrate voice search into a React and TypeScript app by using the React speech recognition library to manage the microphone, listening state, and transcript, updating search text with visual cues.
Explore handling change events in TypeScript by moving the handler to a separate function, using proper type annotations such as React.ChangeEvent<HTMLInputElement> to ensure correct event typing.
Build a two-pane layout with a toggleable side menu and a right video area, switching between small and large menu sizes using React state and styled-components.
Create the small side menu for a YouTube clone by building side-menu.tsx, mapping items to a MenuItem component, styling with CSS, enabling hover, and integrating translations via useAppContext.
Develop a large side menu for a YouTube clone by rendering a list-based section, styling with a title, and highlighting the active item.
Implement a categories section that filters results by category (such as NBA) using a horizontal carousel, an active category state, and translations from the app context.
Learn to fetch videos via the Pixels API by wiring search queries and active categories, manage loading state, and respond to search bar changes with async requests.
Implement a loading backdrop in a React TypeScript app by managing isFetchingVideos state and toggling a styled absolute backdrop with 0.4 opacity during video fetch.
Create a responsive home page videos section with multiple video groups and dynamic thumbnail sizes, implemented with styled components and TypeScript props.
Build a responsive homepage video item that adjusts thumbnail height with menu size and plays a trailer on hover using React Player, with state-driven play control.
Diagnoses why the menu icon disappears and fixes it by conditionally fetching videos when an active category or search text exists, and correcting video manipulation on the home page.
Adjusts the video item layout for smaller menus by removing fixed height and background, and introduces a bottom-right time badge that shows minutes and seconds from the video duration.
Create a react and typescript video item for a youtube clone, featuring a profile pic, title, and subtitle, built with styled components, a grid layout, and a title truncation utility.
Display the video item title with video.user.name and a details line for duration and views, using a dot separator and gray 14px text, with clean spacing.
Explore building a YouTube shorts section in a React app by creating a reusable video shots component with a show more / show less control, styled components, and basic translation.
Toggle between six and twelve short videos by slicing the list, map over items to render placeholders, and design a thumbnail grid container for a YouTube clone.
Develop a shorts video item component by adapting the regular video item with styled components and CSS, configuring a responsive thumbnail and text details such as video duration.
Define routes in app.tsx to navigate from video items to a watch page, store the selected video id in context, and programmatically navigate using useNavigate.
Create a two-panel YouTube clone page with a left video area and a right more videos section, include top categories, and style items with styled components.
Apply a small view prop to video items to switch layouts, adjust thumbnail size, hide profile pic, and resize title and subtitle fonts for a compact Youtube clone interface.
Create a watch video screen that reads the video id from the route with useParams, fetches video data from context, and plays it with react player.
Create a video details section under the watch video contents by rendering the video title and a description generated with faker, using styled components and a custom text component.
This lecture guides building the video details section with a profile picture, user name, subscriber count, and a subscribe button, plus right-hand action icons using styled components and flex layout.
Set up and style watch video details actions with reusable detail action buttons, icons from react-icons (thumbs up/down, save, share), and a divider to display duration.
Clean up the app by using the location hook to disable the video button on video page, and adjust header title and translation-aware active menu highlighting for a consistent user interface.
Choose a YouTube icon from Icon8, download it, place it in public as YouTube.png, and update index.html to set it as the site icon with a link rel icon.
All app features function, including the side menu, search (typed and voice), language and theme toggles, category filters, and video playback, completing the YouTube clone.
Install TypeScript with Redux Toolkit and react-redux by copying npm install commands from the Redux Toolkit website, paste them into the IDE terminal, and prepare to set up the store.
Configure a redux toolkit store by creating an app slice with a dark state and a change team reducer, exposing actions to switch between dark and light modes.
Create typed custom hooks use app dispatch and use app selector for a Redux Toolkit app, annotating with store types to improve type safety.
Use redux toolkit with react and typescript by reading state with use app selector and toggling the team via dispatching the change team action, sourced from the store.
Configure a reducer to handle actions with payloads in redux using typescript, and define payload types like a string id or an object with an id.
Host the project on Netlify by pushing to GitHub and adding a public _redirects file to route all paths to index.html with a 200 status.
Deploy a YouTube clone to Netlify by signing up, importing the project from GitHub, authenticating, selecting the repo, configuring the build with CI= npm run build, and deploying.
Fix failed deployments by adding an environment variable node_options with max_old_space_size=4096 in deploy settings, then redeploy and rely on continuous integration for auto redeploy after pushing to GitHub.
Welcome, and thank you for you interest in this course.
I am a strong believer in learning by doing. If you wanted to know about how a technology works , you could have just read the documentation. But you're here to get your hands/keyboard dirty and see how it works, especially in the real world.
In this course we would make a clone of the second most popular website in the world , YouTube! . This would be a hands on practical guide. Which means you would learn about the how to use the latest and greatest technologies in the React ecosystem, as you build the project. This is the type of project that makes your portfolio stand out and gives you alot of talking points in your interviews.
Some cool features you would build :
Handle voice recognition to let a user search by voice.
Add different color themes to your project.
Support different languages in your application.
build highly customizable and re-usable components with styled-components.
and so much more !
Technologies you would learn work with:
React
Javascript
Typescript
Redux toolkit
Styled-components
React router dom
Netlify
Scss
Web design
Front end dev best practices
... etc
What are you waiting for ? We have some work to do , let's get started! :-)