Master React 19, Build Ecommerce Solutions, and Prepare for Interviews with TypeScript, Next.js, and Remix
With Packt Publishing
Duration: 28h 8m
Skill level: Advanced
Released: 2/27/2026
Course details
Learn React 19 from the ground up, starting with the essentials of creating React projects with TypeScript, NextJS, and Remix. Explore React fundamentals, including state management, event handling, and component life cycles. Follow along through practical exercises to create dynamic UIs, handle user inputs, and work with the latest tools for building real-world web applications. Dive into full-stack development, integrating React with NodeJS and MySQL to create robust back-end services. Find out how to implement payment gateways with Stripe and manage authentication using JWT.
Each section of the course builds on your React knowledge to help you develop full-fledged ecommerce solutions, from product management and order handling to user authentication. By the end of this comprehensive course, you will have built a fully functional ecommerce platform with dynamic product listings, user accounts, a shopping cart, and a secure checkout process. The course also covers advanced topics such as caching, custom hooks, and deployment on Vercel to equip you to deploy your app in production. Whether you are aiming to specialize in React or expand your full-stack expertise, this course can set you up for success.Note: This course was provided by Packt Publishing. We are pleased to host this content in our library.
Skills you’ll gain
Earn a sharable certificate
Share what you’ve learned, and be a standout professional in your desired industry with a certificate showcasing your knowledge gained from the course.
Learning
LinkedIn Learning
Certificate of Completion
-
Showcase on your LinkedIn profile under “Licenses and Certificate” section
-
Download or print out as PDF to share with others
-
Share as image online to demonstrate your skill
Meet the instructor
Contents
-
-
Course introduction4m 58s
-
(Locked)
React history: Milestone2m 48s
-
(Locked)
What is React RC and latest React version1m 56s
-
(Locked)
IQ: What is React RC and latest React version54s
-
(Locked)
Creating first project: React 192m 9s
-
(Locked)
IQ: Creating first project: React 194m 39s
-
(Locked)
Understanding project structure3m 48s
-
(Locked)
IQ: Understanding project structure5m 45s
-
(Locked)
Creating project with TypeScript3m 1s
-
(Locked)
IQ: Creating project with TypeScript3m 6s
-
(Locked)
Creating project in NextJS3m 45s
-
(Locked)
Creating project in Remix3m 19s
-
(Locked)
IQ: Project with TypeScript and Remix1m 43s
-
-
-
(Locked)
Creating component from scratch4m 17s
-
(Locked)
IQ: Creating component from scratch3m 25s
-
(Locked)
Creating product card5m 13s
-
(Locked)
IQ: Creating product card1m 15s
-
(Locked)
Render dynamic values from an object2m 19s
-
(Locked)
IQ: Render dynamic values from an object52s
-
(Locked)
Rendering dynamic values from an array2m 6s
-
(Locked)
Concept of key attribute in map()2m 30s
-
(Locked)
IQ: Rendering dynamic values from array and key attribute2m 18s
-
(Locked)
React fragment & empty fragment3m 41s
-
(Locked)
IQ: React fragment & empty fragment2m 55s
-
(Locked)
Default vs named export3m 59s
-
(Locked)
IQ: Default vs named export1m 23s
-
(Locked)
The rules of JSX2m 37s
-
(Locked)
IQ: The rules of JSX1m 23s
-
(Locked)
Assigning JSX to variable1m 42s
-
(Locked)
IQ: Assigning JSX to variable1m 15s
-
(Locked)
Understanding props3m 48s
-
(Locked)
IQ: Understanding props1m 42s
-
(Locked)
Making product component dynamic using props1m 44s
-
(Locked)
Conditional rendering4m 54s
-
(Locked)
IQ: Conditional rendering1m 37s
-
(Locked)
Basic event handling: Click3m 18s
-
(Locked)
IQ: Basic event handling1m 47s
-
(Locked)
Parameter passing1m 44s
-
(Locked)
IQ: Parameter passing1m 31s
-
(Locked)
Task: Create a dynamic employee component6m 21s
-
(Locked)
Task: Conditional rendering on employee component (isActive)2m 37s
-
(Locked)
Task: Calculate the factorial value by passing parameter3m 17s
-
(Locked)
-
-
(Locked)
What is the state and why needed?2m 38s
-
(Locked)
IQ: What is the state and why needed?1m 13s
-
(Locked)
useState() hook: Understanding state creation3m 30s
-
(Locked)
IQ: useState() hook: Understanding state creation1m 37s
-
(Locked)
State as a snapshot2m 50s
-
(Locked)
IQ: State as a snapshot1m 15s
-
(Locked)
Updating state based on previous state3m 29s
-
(Locked)
IQ: Updating state based on previous state1m 7s
-
(Locked)
Working with multiple states5m 4s
-
(Locked)
Initializer function: Avoiding recreation of initial state2m 51s
-
(Locked)
IQ: Initializer function: Avoiding recreation of initial state56s
-
(Locked)
Array as state5m 29s
-
(Locked)
IQ: Array as state3m 11s
-
(Locked)
Object as state3m 54s
-
(Locked)
IQ: Object as state3m 10s
-
(Locked)
Task: Initialize the state with the large array3m 8s
-
(Locked)
Task: Update the elements of the state using updater function3m 45s
-
(Locked)
-
-
(Locked)
Event handling recap3m
-
(Locked)
React event object: Synthetic event3m 43s
-
(Locked)
IQ: React event object: Synthetic event2m 3s
-
(Locked)
Input event: Textbox2m 40s
-
(Locked)
Task: Input event: Textbox1m 31s
-
(Locked)
IQ: Input event: Textbox47s
-
(Locked)
Event propagation: Bubbling5m 12s
-
(Locked)
IQ: Event propagation: Bubbling4m 33s
-
(Locked)
Stopping propagation3m 8s
-
(Locked)
IQ: Stopping propagation2m 39s
-
(Locked)
preventDefault(): Preventing default behavior3m 4s
-
(Locked)
IQ: preventDefault(): Preventing default behavior1m 2s
-
(Locked)
form with multiple states6m 2s
-
(Locked)
Task: form with multiple states5m 32s
-
(Locked)
form states as object3m 51s
-
(Locked)
Task: Using object state with form3m 43s
-
(Locked)
Single event handler using dynamic key4m 54s
-
(Locked)
IQ: Single event handler using dynamic key2m 2s
-
(Locked)
Task: Single event handler using dynamic key2m 17s
-
(Locked)
Functional update: The correct way1m 28s
-
(Locked)
Input fields: Checkbox2m 55s
-
(Locked)
Input fields: Radio button5m 33s
-
(Locked)
Task: Input fields: Radio button2m 46s
-
(Locked)
IQ: Input fields2m 17s
-
(Locked)
Task: Form handling using textbox, checkbox, and radio buttons7m 48s
-
(Locked)
Event handling: Event2m 41s
-
(Locked)
Event handling: Event1m 49s
-
(Locked)
Task: Event handling and event3m 28s
-
(Locked)
Event handling and event3m 8s
-
(Locked)
IQ: Event handling and event54s
-
(Locked)
Event handling and event2m 31s
-
(Locked)
Task: Event handling and event3m 42s
-
(Locked)
IQ: & event2m 59s
-
(Locked)
-
-
(Locked)
Introduction2m 1s
-
(Locked)
Project creation2m 30s
-
(Locked)
Project setup with Tailwind CSS and header creation4m 42s
-
(Locked)
Creating product card component4m 26s
-
(Locked)
Rendering product list with static data2m 23s
-
(Locked)
Creating add product modal7m 36s
-
(Locked)
Creating form for add product3m 6s
-
(Locked)
Storing the values of the add product form3m 44s
-
(Locked)
Implementing add product functionality4m 35s
-
(Locked)
Implementing delete functionality4m 3s
-
(Locked)
Setting up edit product form6m 3s
-
(Locked)
Implementing edit product functionality5m 58s
-
(Locked)
Implementing active/inactive product functionality4m 7s
-
(Locked)
Rendering active/inactive products2m 49s
-
(Locked)
-
-
(Locked)
Understanding component life cycle10m 3s
-
(Locked)
IQ: Understanding component life cycle3m 49s
-
(Locked)
Introduction to useEffect hook2m 58s
-
(Locked)
Using simple useEffect() hook3m 22s
-
(Locked)
IQ: Using simple useEffect() hook1m 28s
-
(Locked)
useEffect(): Importance of the dependency array5m 24s
-
(Locked)
IQ: useEffect(): Importance of the dependency array1m 12s
-
(Locked)
useEffect(): Cleanup function8m 50s
-
(Locked)
IQ: useEffect(): Cleanup function3m 20s
-
(Locked)
The right place to call the useEffect() hook2m 36s
-
(Locked)
When to avoid using the useEffect hook in React3m 5s
-
(Locked)
Understanding React Strict Mode's extra setup and cleanup cycle5m 3s
-
(Locked)
useEffect() hook: Managing dependencies3m 8s
-
(Locked)
useEffect() vs DOM updates: Need of useLayoutEffect()5m 40s
-
(Locked)
Deferring effects triggered by interactions in React3m 12s
-
(Locked)
Understanding useEffect only runs on client side5m 3s
-
(Locked)
-
-
(Locked)
Introduction to routing5m 42s
-
(Locked)
Understanding routing in React5m 34s
-
(Locked)
Configure routes using React Router4m 25s
-
(Locked)
IQ: Configure routes using React Router2m 10s
-
(Locked)
Understanding single-page application and multi-page application4m 30s
-
(Locked)
IQ: SPA vs MPA3m 42s
-
(Locked)
Navbar creation on root route2m 18s
-
(Locked)
Creating products page5m 35s
-
(Locked)
Not found page (404)2m 26s
-
(Locked)
IQ: Not found page (404)3m 6s
-
(Locked)
Understanding nested routes5m 29s
-
(Locked)
Dynamically handling nested routes: Route parameter8m 37s
-
(Locked)
IQ: Nested routes: Route parameter1m 42s
-
(Locked)
Layouts: Outlet / component6m 11s
-
(Locked)
IQ: Layouts: Outlet / component1m 51s
-
(Locked)
index attribute: Referring the parent route6m 3s
-
(Locked)
IQ: "index" attribute: Referring the parent route55s
-
(Locked)
Use navbar as a layout2m 35s
-
(Locked)
Passing data to child component: context & useOutletContext() hook4m 21s
-
(Locked)
Passing data to child component: "state" and useLocation() hook2m 53s
-
(Locked)
IQ: context, useOutletContext(), "state" and useLocation() hook1m 33s
-
(Locked)
Creating product details card5m 15s
-
(Locked)
Understanding the useRoutes() hook5m 49s
-
(Locked)
IQ: Understanding the useRoutes() hook1m 55s
-
(Locked)
Understanding NavLink component5m 55s
-
(Locked)
IQ: Understanding NavLink component1m 30s
-
(Locked)
Navigate component for redirection2m 30s
-
(Locked)
useNavigate(): Correct way to redirect6m 20s
-
(Locked)
IQ: Navigate and useNavigate()1m 53s
-
(Locked)
Project restructuring5m 12s
-
(Locked)
Interface improvement6m
-
(Locked)
-
-
(Locked)
Prop drilling4m 8s
-
(Locked)
IQ: Prop drilling1m 41s
-
(Locked)
Understanding of Context API8m 6s
-
(Locked)
IQ: Understanding of Context API2m 15s
-
(Locked)
useContext() hook1m 55s
-
(Locked)
IQ: useContext() hook40s
-
(Locked)
Creating interface for calculator app7m 11s
-
(Locked)
Setup Context API into calculator app5m 32s
-
(Locked)
Handling input data in the global state4m 20s
-
(Locked)
Global state manipulation4m 25s
-
(Locked)
IQ: Global state manipulation42s
-
(Locked)
Nested context providers6m 40s
-
(Locked)
-
-
(Locked)
Introduction to Redux and RTK5m 45s
-
(Locked)
IQ: Introduction to Redux and RTK2m 18s
-
(Locked)
Creating slice2m 40s
-
(Locked)
IQ: Creating slice1m 3s
-
(Locked)
Configuring store3m 56s
-
(Locked)
IQ: Configuring store2m 4s
-
(Locked)
Fetching the store data: useSelector()3m 30s
-
(Locked)
IQ: Fetching the store data: useSelector()35s
-
(Locked)
Creating actions in slice4m 39s
-
(Locked)
IQ: Creating actions in slice1m 52s
-
(Locked)
How immutability in actions works behind the scenes3m 8s
-
(Locked)
IQ: How immutability in actions works behind the scenes1m 30s
-
(Locked)
Handling input values in Redux7m 38s
-
(Locked)
Calculating arithmetic operations in Redux3m 49s
-
(Locked)
Implementing Redux in React Router app6m 26s
-
(Locked)
-
-
(Locked)
Introduction: HTTP requests9m 15s
-
(Locked)
IQ: Introduction: HTTP requests4m 22s
-
(Locked)
fetch() API9m 9s
-
(Locked)
IQ: fetch() API1m 36s
-
(Locked)
Rendering users data4m 25s
-
(Locked)
POST method in fetch() API5m 47s
-
(Locked)
PUT and PATCH method in fetch() API2m 28s
-
(Locked)
DELETE method in fetch() API1m 38s
-
(Locked)
Error handling in fetch() API4m 36s
-
(Locked)
Error handling with try-catch() block3m 18s
-
(Locked)
-
-
(Locked)
Introduction3m 12s
-
(Locked)
IQ: Introduction2m 5s
-
(Locked)
Project creation2m 37s
-
(Locked)
Creating server using Express.js7m
-
(Locked)
IQ: Creating server using Express.js2m 13s
-
(Locked)
Creating basic API6m 5s
-
(Locked)
IQ: Creating basic API1m 20s
-
(Locked)
Configuring nodemon1m 46s
-
(Locked)
IQ: Configuring nodemon1m 26s
-
(Locked)
Postman installation2m 22s
-
(Locked)
Making a GET request from Postman2m 27s
-
(Locked)
-
-
(Locked)
Introduction3m 16s
-
(Locked)
IQ: Introduction1m 58s
-
(Locked)
MySQL installation8m 47s
-
(Locked)
Database creation2m 19s
-
(Locked)
Drop database1m 48s
-
(Locked)
Data types5m 35s
-
(Locked)
Creating table3m 35s
-
(Locked)
IQ: Creating table1m 46s
-
(Locked)
INSERT query3m 13s
-
(Locked)
Basic filtering with WHERE clause2m 18s
-
(Locked)
Advanced filtering with WHERE clause3m 15s
-
(Locked)
Sorting data with 'LIMIT' & 'ORDER BY'1m 58s
-
(Locked)
Updating the data1m 39s
-
(Locked)
Delete records using DELETE clause2m 34s
-
(Locked)
Drop table2m 21s
-
(Locked)
-
-
(Locked)
Connect MySQL database in Node app4m 27s
-
(Locked)
IQ: Connect MySQL database in Node app1m 24s
-
(Locked)
Fetching products from database2m 18s
-
(Locked)
IQ: Fetching products from database1m 16s
-
(Locked)
Configuring organized routes with express.Router()5m 2s
-
(Locked)
Creating API for adding products7m 3s
-
(Locked)
Creating API to fetch a unique product4m 40s
-
(Locked)
Creating API to update product's data4m 2s
-
(Locked)
IQ: Creating API to update product's data2m 1s
-
(Locked)
Creating API to delete a product2m 24s
-
(Locked)
Restructuring database connection and success messages3m 57s
-
(Locked)
-
-
(Locked)
Introduction1m 47s
-
(Locked)
Fetching products dynamically4m 22s
-
(Locked)
Rendering products dynamically5m 4s
-
(Locked)
Integrating API in product details page4m 23s
-
(Locked)
Creating interface for adding products3m 49s
-
(Locked)
Implementing add products form4m 51s
-
(Locked)
Integrating 'Add Product' API3m 25s
-
(Locked)
Implementing edit products functionality7m 25s
-
(Locked)
Creating delete confirmation popup8m 45s
-
(Locked)
Integrating delete product API4m 25s
-
(Locked)
-
-
(Locked)
Introduction and definition2m 58s
-
(Locked)
Setting-up the environment2m 18s
-
(Locked)
Tailwind CSS installation and configuration2m 18s
-
(Locked)
TO-DO form component creation #14m 9s
-
(Locked)
To-do form component creation #22m 9s
-
(Locked)
TodoList component: Displaying tasks5m 30s
-
(Locked)
Managing tasks status: Todo-item component6m 14s
-
(Locked)
Implementing task deletion functionality4m 52s
-
(Locked)
Data persistence with localStorage3m 39s
-
(Locked)
Styling the application6m 45s
-
(Locked)
Creating a task summary component4m 38s
-
(Locked)
Conclusion and assignments1m 45s
-
(Locked)
-
-
(Locked)
Next JS in spite of ReactJS1m 38s
-
(Locked)
IQ: Next JS in spite of ReactJS3m 32s
-
(Locked)
Creating first project4m 2s
-
(Locked)
IQ: Creating first project2m 16s
-
(Locked)
Project structure2m 59s
-
(Locked)
IQ: Project structure1m 33s
-
(Locked)
Pages router vs app router1m 40s
-
(Locked)
IQ: Pages router vs app router54s
-
(Locked)
-
-
(Locked)
Defining routes2m 53s
-
(Locked)
Nested routes1m 28s
-
(Locked)
Linking pages with Link2m 48s
-
(Locked)
React server component vs client component5m 18s
-
(Locked)
IQ: React server component vs client component1m 24s
-
(Locked)
Error page3m 22s
-
(Locked)
Dynamic routes and route params4m 34s
-
(Locked)
Asynchronous server components3m 51s
-
(Locked)
IQ: Asynchronous server components1m 24s
-
(Locked)
-
-
(Locked)
Understanding caching in Next3m 19s
-
(Locked)
IQ: Understanding caching in Next2m 23s
-
(Locked)
Unexpected behaviour in project build3m 21s
-
(Locked)
IQ: Unexpected behaviour in project build1m 35s
-
(Locked)
Static to dynamic: Cache control2m 28s
-
(Locked)
IQ: Static to dynamic: Cache control1m 6s
-
(Locked)
-
-
(Locked)
useActionState() hook6m 3s
-
(Locked)
IQ: useActionState() hook1m 47s
-
(Locked)
The magic of memoization3m 56s
-
(Locked)
IQ: Memoization1m 50s
-
(Locked)
useCallback() and useMemo() hook5m 42s
-
(Locked)
IQ: useCallback() and useMemo() hook1m 24s
-
(Locked)
The useOptimistic() hook8m 54s
-
(Locked)
IQ: useOptimistic() hook36s
-
(Locked)
The useFormStatus() hook4m 9s
-
(Locked)
IQ: useFormStatus() hook1m 25s
-
(Locked)
The useDebugValue() hook3m 19s
-
(Locked)
IQ: useDebugValue() hook2m 23s
-
(Locked)
-
-
(Locked)
Introduction2m 36s
-
(Locked)
Project creation2m 41s
-
(Locked)
Creating sidebar component3m 34s
-
(Locked)
Working on sidebar3m 46s
-
(Locked)
Combining utility classes with @apply3m 54s
-
(Locked)
IQ: @layer and @apply: Combining utility classes1m 37s
-
(Locked)
Styling the sidebar4m 56s
-
(Locked)
Adding icons to the sidebar3m 3s
-
(Locked)
Creating 'Users' page5m 43s
-
(Locked)
Creating 'Add Users' form7m 8s
-
(Locked)
Implementing component-based architecture6m 34s
-
(Locked)
Creating button & input components4m 16s
-
(Locked)
Refactoring code structure2m 40s
-
(Locked)
Database creation2m 30s
-
(Locked)
Adding users with server action4m
-
(Locked)
Implementing hashing3m 19s
-
(Locked)
IQ: Implementing hashing2m 4s
-
(Locked)
Validating user creation3m 44s
-
(Locked)
Rendering users in the table5m 44s
-
(Locked)
Creating edit user page3m 33s
-
(Locked)
Dynamic default values for edit2m 45s
-
(Locked)
Updating user data3m 43s
-
(Locked)
Deleting user3m 41s
-
(Locked)
Creating delete confirmation popup4m 17s
-
(Locked)
Enabling confirmation popup5m 32s
-
(Locked)
Deleting user by confirmation popup2m 24s
-
(Locked)
Creating product type page4m 39s
-
(Locked)
Creating add product type page3m 36s
-
(Locked)
Adding product types and product models into the schema3m 37s
-
(Locked)
IQ: Adding models in the schema: Product type & product1m 6s
-
(Locked)
Adding product type using server action4m 26s
-
(Locked)
Rendering product types into the table2m
-
(Locked)
Creating edit product type page3m 19s
-
(Locked)
Dynamic default values for product type2m 33s
-
(Locked)
Updating product type with server action2m 39s
-
(Locked)
Deleting product type with server action1m 50s
-
(Locked)
Creating products page3m 46s
-
(Locked)
Creating products interface for listing4m 50s
-
(Locked)
Creating add product page2m 57s
-
(Locked)
Completing add product form2m 55s
-
(Locked)
Creating switch component5m 10s
-
(Locked)
Creating file input component6m 17s
-
(Locked)
Rendering dynamic product types data in add product page2m 12s
-
(Locked)
Creating server action for adding products3m 3s
-
(Locked)
Implementing image storage functionality5m 53s
-
(Locked)
Completing add product functionality4m 13s
-
(Locked)
Rendering dynamic data in products table3m 53s
-
(Locked)
Creating edit product page3m 13s
-
(Locked)
Dynamic default values for product3m 44s
-
(Locked)
Render default values in switch and file input2m 39s
-
(Locked)
Updating product with server action5m 14s
-
(Locked)
IQ: Updating product with server action1m 39s
-
(Locked)
Deleting product with server action2m 3s
-
(Locked)
-
-
(Locked)
Initiating client section1m 53s
-
(Locked)
Creating header component5m 20s
-
(Locked)
Implementing search bar2m 16s
-
(Locked)
Joining Tailwind classes with ideal approach2m 34s
-
(Locked)
IQ: Joining Tailwind classes with ideal approach2m 38s
-
(Locked)
Adding profile dropdown4m 31s
-
(Locked)
useRef() hook4m 42s
-
(Locked)
Close profile dropdown menu on outside click3m 2s
-
(Locked)
IQ: Close profile dropdown menu on outside click2m 36s
-
(Locked)
Creating input component1m 54s
-
(Locked)
Creating home page2m 34s
-
(Locked)
Creating filters section6m 15s
-
(Locked)
Creating custom accordion component10m 58s
-
(Locked)
IQ: Creating custom accordion component1m 37s
-
(Locked)
Completing custom accordion component4m 35s
-
(Locked)
Continue on filter section3m 2s
-
(Locked)
Creating price range slider component4m 39s
-
(Locked)
Creating product card component8m 17s
-
(Locked)
Completing product card component2m 47s
-
(Locked)
Creating button component1m 44s
-
(Locked)
API creation for product listing3m 59s
-
(Locked)
Dynamic product rendering using server action7m 12s
-
(Locked)
API creation for fetching product types1m 41s
-
(Locked)
Dynamic product type rendering using API2m 28s
-
(Locked)
Set filter values into the search params4m 29s
-
(Locked)
Modifying products API to apply filters5m 35s
-
(Locked)
Filter functionality on client side3m 44s
-
(Locked)
Search filter functionality4m 31s
-
(Locked)
Creating the product page6m 38s
-
(Locked)
Completing product page3m 21s
-
(Locked)
API creation for fetching a product by its ID2m 54s
-
(Locked)
Dynamic product details rendering using API3m 25s
-
(Locked)
Rendering products based on status2m 42s
-
(Locked)
Creating cart page3m 24s
-
(Locked)
Rendering cart item card6m 22s
-
(Locked)
Completing the cart UI4m 55s
-
(Locked)
Creating context for handling products1m 50s
-
(Locked)
IQ: Creating context for handling products1m 28s
-
(Locked)
Implement cart functionalities8m 4s
-
(Locked)
Making cart page dynamic2m 54s
-
(Locked)
Enabling quantity selection3m 45s
-
(Locked)
Finishing dynamic cart page5m 6s
-
(Locked)
-
-
(Locked)
Creating login page5m 52s
-
(Locked)
Introduction of JOSE + JWT1m 53s
-
(Locked)
Setup authentication flow using JOSE + JWT8m 49s
-
(Locked)
Create server action for login3m 13s
-
(Locked)
Cookie-based authentication4m 56s
-
(Locked)
IQ: Cookie-based authentication1m 14s
-
(Locked)
Handling private and public routes using middleware5m 3s
-
(Locked)
Fetching authenticated user data3m 7s
-
(Locked)
Implementing logout with server action5m 18s
-
(Locked)
Authenticate all server actions of admin section2m 50s
-
(Locked)
Creating authentication routes in client section3m 28s
-
(Locked)
Creating interface for authentication routes5m 47s
-
(Locked)
Creating buyer table in the database1m 55s
-
(Locked)
Creating sign-up API3m 52s
-
(Locked)
Testing signup API using Postman3m 37s
-
(Locked)
Creating login API2m 56s
-
(Locked)
Testing the login API using Postman1m 34s
-
(Locked)
Implementing signup functionality in the client section7m 19s
-
(Locked)
Implementing customer login functionality3m 59s
-
(Locked)
API to fetch unique customer's data4m 18s
-
(Locked)
Fetching customer's data using API in the client section5m 35s
-
(Locked)
Logout functionality in the client section2m 8s
-
(Locked)
-
-
(Locked)
Introduction2m 16s
-
(Locked)
IQ: Introduction2m 17s
-
(Locked)
Basic configurations of Stripe4m 19s
-
(Locked)
Rendering Stripe's embedded checkout form8m 11s
-
(Locked)
Creating checkout session dynamically6m 44s
-
(Locked)
Creating payment status page7m 23s
-
(Locked)
Creating sales and transaction table in database4m 51s
-
(Locked)
API to update database after the successful checkout6m 5s
-
(Locked)
Testing the checkout API using Postman3m 57s
-
(Locked)
Integrating checkout API in the client section2m 55s
-
(Locked)
Creating buyer master section3m 18s
-
(Locked)
Rendering dynamic data in buyers table2m 40s
-
(Locked)
-
-
(Locked)
Introduction2m 21s
-
(Locked)
Preparing customers and buyers report3m 11s
-
(Locked)
Rendering customers & buyers report3m 32s
-
(Locked)
Preparing total revenue report2m 2s
-
(Locked)
Preparing recent order report7m 46s
-
(Locked)
Creating purchased products modal3m 51s
-
(Locked)
Fetching purchased products in modal1m 41s
-
(Locked)
Render products in the purchased products table2m 24s
-
(Locked)
Implementing chart using Recharts5m 51s
-
(Locked)
Preparing sales report using chart4m 42s
-
(Locked)
Rendering sales chart with dynamic values2m 35s
-
(Locked)
Preparing customers report using chart4m 35s
-
(Locked)
Creating chart section component1m 34s
-
(Locked)
-
-
(Locked)
Introduction3m 55s
-
(Locked)
IQ: Introduction1m 41s
-
(Locked)
Introduction to CI/CD2m 38s
-
(Locked)
IQ: Introduction to CI/CD1m 5s
-
(Locked)
GitHub integration6m 4s
-
(Locked)
IQ: GitHub integration1m 38s
-
(Locked)
Database migration from SQLite to MySQL5m 22s
-
(Locked)
Link the MySQL database to admin application4m 22s
-
(Locked)
Deploying admin app on Vercel7m 43s
-
(Locked)
Deploying client app on Vercel6m 39s
-
(Locked)
-
-
(Locked)
Introduction & project definition3m 19s
-
(Locked)
Why choose Vite over CRA?2m 36s
-
(Locked)
Setting up the environment2m 45s
-
(Locked)
Install and configure Tailwind CSS3m 46s
-
(Locked)
Creating card for email verification4m 43s
-
(Locked)
Creating routes4m 14s
-
(Locked)
Creating OTP verification card4m 6s
-
(Locked)
Handling form values4m 28s
-
(Locked)
Setting up Express server using Node.js7m 50s
-
(Locked)
Creating basic GET API5m 27s
-
(Locked)
Creating a simple POST API3m 28s
-
(Locked)
Postman installation2m 22s
-
(Locked)
Making a POST request from Postman3m 47s
-
(Locked)
Organizing routes with "express.Router()"4m 7s
-
(Locked)
Sending email using SendGrid6m 22s
-
(Locked)
Creating API to verify OTP8m 29s
-
(Locked)
Set OTP expiration time4m 31s
-
(Locked)
API integration for sending OTP8m 1s
-
(Locked)
Integrating API to verify the OTP5m 43s
-
(Locked)
What’s included
- Practice while you learn 1 exercise file
- Learn on the go Access on tablet and phone