
Master full stack development with Java, React, and Spring Boot, building a real e-commerce app with REST APIs, security, and Stripe payments.
Trace the evolution of web apps from static brochures to dynamic ajax-driven single page apps. Explore how UI and backend architectures, databases, and full stack frameworks drive modern development.
Create a hello world UI using the React library with Vite, install Node.js, scaffold a React app and Spring Boot backend, and run the dev server at port 5173.
Install Visual Studio Code for UI development, apply the Dracula dark theme, and customize fonts and icons. Open folders, install extensions, and run the React app with npm run dev.
Explore the difference between libraries and frameworks with examples like React as a library and Spring Boot as a framework. Learn how inversion of control shapes large-scale development.
Explore the basics of React, a JavaScript library for building web user interfaces with reusable components, a virtual DOM, JSX syntax, and unidirectional data flow.
Explore common React questions, from jsx basics to tooling, compare html and jsx, and learn how to build React components with tools like Vite.
Create a simple HTML page in a new VS Code folder and test it with Live Server; learn inline CSS, style tags, external CSS, and the DOM.
Build dynamic web pages with HTML, CSS, and JavaScript by manipulating the DOM, generating random numbers, and updating content, then compare vanilla JavaScript with React's JSX and the virtual DOM.
Explore building apps with the React library by importing React and ReactDOM via CDN or locally, rendering elements with createElement and createRoot, and understanding the virtual DOM.
Explore building React apps by manually creating elements with React.createElement and rendering them with ReactDOM.createRoot, then compare with JSX and dynamic content updates in the DOM.
Explore building complex html with React using plain JavaScript and createElement and createRoot. Discover why JSX simplifies this work and how React renders under the root element.
Explore JSX as JavaScript with XML-inspired syntax to write HTML-like code in React components. Render dynamic content using variables and expressions, with conditional rendering and map-based lists leveraging keys.
Explore advanced JSX features in React, including props, nested elements, and event handlers. Learn rules for multi-line JSX, curly braces, and preventing XSS by sanitizing expressions.
Learn how to upgrade HTML to JSX, handle multi-line syntax, and apply inline styles with double curly braces while understanding why browsers require transpilation from JSX to React.createElement().
Discover how jsx is converted to javascript through transpilation, turning one high-level syntax into browser-friendly code. Explore Vite, esbuild, and Babel that power front-end development.
Demonstrates prototyping with Babel standalone in the browser, using a text/babel script to run JSX. Shows creating functional components with arrow and plain function syntax and Babel transpilation.
Learn why vite and other build tools accelerate react development with lightning-fast builds, automatic transpilation, seamless dependency management, hot module replacement, and production-ready dist deployment.
Explore the folder and file structure of a Vite-generated React app: dist, node_modules, public, and src. Learn how these parts work behind the scenes as the browser loads the app.
Explore how a vite-based react app loads index.html and mounts to the root div with main.jsx. It uses strict mode, createRoot, and jsx to increment a count in single-page application.
Explore the dom vs virtual dom: how react uses a virtual dom and a reconciliation/diffing algorithm to update the actual dom efficiently during state changes and rendering of functional components.
Learn how semantic versioning (major.minor.patch) guides library updates, and how package.json symbols like caret, tilde, and x determine npm update behavior, with package-lock.json ensuring consistent, stable UI apps.
Understand how package-lock.json locks exact dependency versions during npm install, preventing drift across environments by recording locked versions from package.json, including caret ranges, and generating node_modules accordingly.
Build a React-based e-commerce UI to sell stickers and learn core components. Create header, banner, search, sort by, product catalog, and footer components while mastering React and Spring Boot concepts.
React components are the building blocks of a UI, with a root app and reusable pieces like banners, products, headers, and JSX with props and state.
Set up a vite-based react app in section3, install font awesome libraries for icons, and build a header with home, about, contact, login, and a cart icon.
Organize React components under src/components, use capitalized names, and choose .jsx or .js extensions (or .ts/.tsx for TypeScript) based on project setup and Vite defaults.
Create a Header functional component with an arrow function, render a logo and navigation using FontAwesome icons, and export it as default for App integration.
Discover how to create a class component named ClassHeader, extending React Component and rendering JSX, then compare with functional components and learn to prefer functional components for modern development.
Learn to export and import components in JavaScript and React, using default and named exports, curly braces syntax, aliases, and importing all as a single object.
Build a footer component in React that displays a blinking heart icon and a link to Eazybytes, organized in a lowercase footer subfolder with Footer.jsx and a dedicated footer.css.
Replace a dummy wrapper div with React.Fragment or empty tags to wrap header and footer inside the root, avoiding extra DOM nodes and JSX wrappers.
Build the homepage layout with header, content area, and footer, displaying a dynamic product list using a React component hierarchy (App, Home, PageHeading, PageTitle, ProductListings, ProductCard, Price).
Build a React home section with Home, PageHeading, and PageTitle components. Wire them in App.jsx between header and footer, and make the page title dynamic.
Discover how props and the children prop pass data and content from a parent to a child in React. Learn destructuring, props immutability, and the unidirectional data flow.
Pass data from a parent to a child using props in the PageTitle component. Destructure props to render the dynamic title in an h1.
Demonstrates turning page heading into a dynamic component by using props and children. Shows passing title and content from the home component and using destructuring for flexible rendering.
Create a ProductListings component that accepts a products array from props, maps to ProductCard components, and displays price using the Price component.
Set up mock product data in data/products.js, pass it from Home to ProductListings, and render 30 product cards with name, price, description, and images.
Identify and fix React rendering issues by assigning a unique key to each product in a list, using productId to enable efficient, targeted updates in ProductListings.
Learn how dynamic components render conditionally at runtime using backend data, and how ternary logic and maps enable flexible, interactive React UIs that load components on demand.
Learn how React built-in components render standard HTML elements from JSX, translate JSX to the DOM, and differ from custom components in reusability, naming, and className handling.
Explore the key differences between JSX and HTML in React, including className vs class, htmlFor vs for, self-closing tags, embedding JavaScript with curly braces, and camelCase attribute naming.
Learn how JSX handles inline styles using a JSON object with camelCase keys and braces, unlike HTML's style attribute. Also compare boolean attributes and comments in JSX.
Explore how to style React components using separate CSS files, CSS modules, and styled components, plus inline styles, and compare their pros and cons while previewing Bootstrap and Tailwind.
Explore styling React apps with traditional CSS files and class names, and the global scope risks they create. See how component-scoped styling using specific class names, like footer.css, fixes conflicts.
Discover styling React apps with inline styles, using the style attribute and JSON objects, converting CSS to camel case, and applying dynamic, conditional styling to overcome CSS file drawbacks.
Learn to fuse static and dynamic styling in React using template literals, building dynamic class names and inline styles with backticks and ${} expressions to optimize components.
Style react components with css modules by renaming to .module.css and importing as a styles object, so class names are module-scoped and colors switch via isActive using primary-color and secondary-color.
Learn to style React components using styled-components, install and import the library, create styled elements like H1 and EasyButton, and reuse styled components across the project.
Explore dynamic styling in styled components by using arrow functions and props to conditionally set background colors, with $ prefixed props, and apply hover and focus styles for interactivity.
Learn to style React apps using styled-components, writing css-in-js, creating reusable components with conditional styles, nested rules, and media queries, and review pros and cons.
Explore bootstrap as a rapid styling framework in a React app, install with npm i bootstrap, and import bootstrap.min.css from node_modules to style components quickly.
Apply Bootstrap styling to React UI by leveraging predefined btn classes, creating a BootstrapButton component, and composing responsive layouts with container and col-6.
Learn to create and style Bootstrap alerts using the alert class and variants like alert-primary, alert-success, alert-warning, and make them dismissible with Bootstrap's JavaScript.
Learn to style Bootstrap cards with card-img-top, card-body, and card-title, and arrange them using Bootstrap grid and flex utilities for responsive layouts.
Learn to build and style a Bootstrap form for login and user input, convert code to JSX, and explore Bootstrap components like typography, tables, accordions, navbars, and modals.
Explore customizing bootstrap styling by overriding btn-primary and alert-primary with plain css and sass variables, using custom.scss and import to redefine colors.
Explore the pros and cons of Bootstrap, including pre-built components and responsive design. Compare customization, brand alignment, and file size, then note Tailwind as an alternative.
Explore Tailwind CSS, a utility-first framework for rapid UI development, and learn to install and configure it in a React + Vite project with practical demos.
Install tailwind css intellisense and tailwind fold extensions in VS Code to access utility class recommendations, preview the underlying css, and fold lengthy tailwind class lists in your React components.
Explore Tailwind CSS utility classes for spacing, sizing, typography, and color, including padding, margin, width, height, and text options; discover ready-made components and UI kits.
Explore Tailwind typography and spacing utilities to center content and set a max width with classes like max-w-7xl, mx-auto, p-8, text-center, text-lg, font-bold, and text-blue-600.
Learn to style elements with Tailwind CSS utility classes, applying background colors, borders, padding, margins, and rounded corners through live demos.
Explore tailwind's grid, flex, and table utilities to build responsive layouts with three-column grids, flexible rows, and styled tables in React apps.
Demonstrates styling buttons, hover animations, and a Tailwind CSS card using Tailwind CSS, with padding, colors, rounded corners, transitions, and a read more button.
Learn how Tailwind enables responsive design with mobile-first breakpoints (sm, md, lg, xl, 2xl) and the viewport meta tag. See how prefixed utilities apply at specific breakpoints via media queries.
Learn responsive design with Tailwind CSS by building a grid that scales from one to four columns using breakpoints sm, md, lg, and apply mobile-first responsive text and color utilities.
Discover how to customize Tailwind utility classes using bracket notation, applying custom colors and exact heights and widths with examples like bg-[#555733], h-[165], and w-[300].
Define tailwind theme variables to standardize colors, fonts, and breakpoints across a project. Use the @theme syntax in index.css to define and apply variables.
Compare Tailwind and Bootstrap, highlighting Tailwind's utility-first approach versus Bootstrap's component-based styling, customization ease, and performance benefits from smaller CSS output.
Style the e-commerce app using tailwind css by migrating from plain css, configuring tailwind in vite, and updating index.css and footer with theme variables for primary colors and Josefin Sans.
Style the header of an e-commerce UI with tailwind utilities, building a sticky, bordered header and reusable nav link classes to reduce repetition.
Style an ecommerce ui in a React app using Tailwind to build a responsive product grid with interactive cards, hover effects, pricing details, and clear page headings.
Explore why frameworks like Spring and Spring Boot simplify backend development, offering security, logging, transactions, and database persistence to build scalable, reliable web applications.
Explore the Spring framework and its core concepts—inversion of control, dependency injection, beans, context, and the IOC container—and how Spring Boot eases building web apps and microservices.
Explain inversion of control and dependency injection in Spring, showing how the framework manages object creation and dependencies to reduce manual coding and enable loose coupling.
Demonstrates inversion of control and dependency injection in Java, contrasting plain object creation with factory patterns and the Spring Framework autowiring, using a vehicle, speakers, and wheels.
Explore how inversion of control and dependency injection promote loose coupling among components, enabling easy swapping of speaker and wheel implementations, minimal coding, easier unit testing, and greater maintainability.
Explore how spring beans are created and managed by the IOC container, including lifecycle and injection, how spring context stores bean information, and how bean factory and application context differ.
Create a simple spring project in IntelliJ using Maven. Configure Java 21, groupId com.eazybytes, artifactId example1, and add spring-context via pom.xml.
Learn how to create spring beans with @Bean in a @Configuration class, returning a Vehicle named Tesla and simple string and integer beans, with bean names derived from method names.
Initialize the Spring IoC container with AnnotationConfigApplicationContext, create and manage beans using @Bean, and retrieve typed beans like Vehicle via getBean in a main class.
Show how three vehicle beans trigger no unique bean definition exception in Spring, and resolve by invoking getBean with the specific bean name (vehicle1) and its type.
Learn how to assign custom names to Spring beans using the @Bean annotation, with name, value, or direct parentheses, and validate bean retrieval with audiVehicle, hondaVehicle, and ferrariVehicle.
Annotate one bean with @Primary to designate it as the default when multiple beans of the same type exist, resolving NoUniqueBeanDefinitionException in spring's bean loading.
Learn how @Component marks a class as a Spring bean, enabling the IoC container to instantiate it via component scanning and injectable dependencies.
Explore stereotype annotations in Spring, including @Controller, @Service, @Repository, and @RestController, built on @Component, and learn how they map to controller, service, and repository layers with component scanning.
Compare @Bean and @Component approaches to create beans in Spring; discuss differences in bean counts, applicability to library classes, and control over bean creation.
Explore how Spring's IOC and dependency injection connect controller, service, and repository beans through bean wiring; compare manual wiring with autowiring and understand why beans need dependencies.
Learn manual bean wiring in Spring by defining Vehicle and Person beans with @Bean, then wire them via Person.setVehicle() to show a person owning a vehicle.
Inject dependencies by wiring beans with method parameters in Spring, letting the IOC container supply a vehicle into the person bean. See automatic bean creation when missing.
Explore autowiring in Spring, which automatically injects dependencies at runtime using @Autowired, replacing manual wiring. Learn field, setter, and constructor injection and when to use each.
Master autowiring using field injection in spring by injecting an engine into a vehicle with @Component and @Autowired, and initialize with @PostConstruct.
Learn how Spring autowiring works through setter, field, and constructor injection. Constructor injection enables final fields, immutable beans, and easier unit testing with mocks for production apps.
Explore how Spring handles multiple beans of the same type using @Qualifier and @Primary, with Coffee, Espresso, and Cappuccino examples and autowiring scenarios.
Explore how circular dependencies form during autowiring in spring, using car and engine beans as a demo, and learn to avoid them to prevent UnsatisfiedDependencyException in real applications.
Discover how the Spring IOC container uses bean scopes to control instances, focusing on the default singleton scope and the prototype, request, session, and application scopes.
Explore eager versus lazy initialization for singleton beans in spring, where the IOC container creates beans at startup by default, or on first reference using @Lazy, balancing performance and memory.
Explore prototype versus singleton scopes in Spring: prototype creates a new bean per use, unlike singleton; stateless favors singleton, stateful favors prototype.
Explore how Spring Boot serves as the hero of the Spring Framework, dramatically reducing boilerplate and configurations to quickly build back-end web apps, microservices, and cloud deployments.
Create a Spring Boot web application skeleton using start.spring.io with Maven, Java 21, and Spring Web, then open the generated project in IntelliJ.
Explore spring boot starter projects, especially spring-boot-starter-web, and learn how these ready-made bundles auto-configure dependencies, reduce version conflicts, and let developers focus on coding.
Learn how to start a Spring Boot web application using the main class annotated with @SpringBootApplication, a shortcut that combines @SpringBootConfiguration, @EnableAutoConfiguration, and @ComponentScan.
Explore how spring boot auto-configuration creates beans from pom.xml dependencies for a web app with embedded Tomcat and default port 8080. Exclude certain auto-configurations and enable debug.
Explore building rest APIs in Spring Boot, using http methods and json payloads, with annotations like @RestController and @RequestMapping, to expose endpoints such as api/v1/users for the React UI.
Design rest APIs with noun-based paths, implement versioning via uri, request param, header, or content negotiation, and apply standard http status codes for CRUD operations.
Develop a Spring Boot rest API with a product controller exposing a get products endpoint at api/v1/products, tested via browser, Postman, or IntelliJ http client.
Set up an in-memory H2 database in a Spring Boot app to store product details, enable the H2 console, and wire Spring Data JPA for UI-ready data.
Configure a static h2 in-memory database in spring boot using spring.datasource.url and related properties. Move schema.sql and data.sql to a custom location with spring.sql.init.schema.location and spring.sql.init.data.locations.
Switch h2 from in-memory to file-based storage by setting spring.data source.url to a file path and AUTO_SERVER, so data persists across restarts; initialize with schema.sql and data.sql.
Explore how Spring Data JPA abstracts tedious JDBC steps to connect to databases from Java code, turning SQL results into POJO objects with minimal configuration.
Learn how Spring Data simplifies database access across relational and NoSQL databases, reducing boilerplate. Also explore Spring Data JPA and Hibernate as the default relational ORM provider.
Explore the core Spring Data and Spring Data JPA interfaces, including Repository, CrudRepository, ListCrudRepository, PagingAndSortingRepository, ListPagingAndSortingRepository, and JpaRepository, and how they enable CRUD, paging, and sorting.
Learn how Spring Data JPA maps a products table to a Jakarta entity class using @Entity, @Table, and @Column, including primary key generation and nullable constraints.
Learn how Lombok reduces boilerplate by generating getters and setters via annotations. Configure the Maven Lombok dependency and compiler plugin, enable annotation processing, and see code shrink in your class.
Create a repository interface by extending JpaRepository to map a product entity to its database table, enabling Spring Data JPA to generate CRUD methods behind the scenes.
Demonstrates Spring Data JPA changes by wiring a product repository via constructor injection and fetching all products with findAll from an H2 database, outlining service layer best practices.
Define a dedicated service layer in Spring Boot with IProductService and ProductServiceImpl, annotate with @Service and @RequiredArgsConstructor, expose getProducts(), and introduce the DTO pattern for UI data.
Implement the DTO pattern to securely transfer data from UI to backend using dedicated DTO classes and simple mappers that omit password and SSN.
Learn to generate a JPA entity class and Spring Data repository with JPA Buddy in IntelliJ, connect to your database from the IDE, and configure identity generation and Lombok features.
Install and configure axios in the easystore-ui to replace fetch, create a centralized apiClient with a base URL from .env, and enable reliable API calls to the Spring Boot backend.
Leverage react hooks to fetch products from the backend rest api using apiClient, manage state with useState and useEffect, and update the UI on mount while troubleshooting CORS.
Explore how CORS, a browser security feature, controls cross-origin requests between a React UI on localhost:5173 and a Spring Boot backend, with solutions using CrossOrigin or a global CorsFilter.
Fix cors errors by configuring spring boot backend with @CrossOrigin or a cors config bean, enabling a single origin (port 5173) and seamless communication with the React frontend.
Implement loading and error handling in the home page using React useState, setLoading and setError, show a loading message while fetching products and display backend errors with axios.
Learn how strict mode runs components twice in development to surface bugs, including repeated use effect and rest API calls, and how pure functions and deprecated APIs are checked.
Build search and sort functionality on the home page by creating SearchBox and DropDown components with props, hooks, and tailwind styling.
Learn to wire up event handling in React on the home page by adding onChange to SearchBox and DropDown, using function references and arrow functions to pass event details.
Learn how to handle input changes with onChange, read input via event.target.value, and pass a function reference through props to coordinate filtering from parent to child components, illustrating one-way binding.
Master how React hooks empower functional components to remember state and trigger re-renders with useState and useEffect. Learn mounting, unmounting, and how hooks enable memory and dynamic UI.
Use useState to convert a variable into state, enabling rerender on searchText updates and filter and sort products by name or description with toLowerCase and includes.
Explains useState in React with multiple state variables, setter functions, and arrow function initializers. Highlights rerender behavior, pitfalls, and practical examples like onChange handling for text fields, counters, and forms.
Implement sort logic in a React app using useState, wiring a Dropdown with onChange to handleSort, sorting products by popularity (default) or price low to high or high to low.
Explore how useMemo caches calculation results to avoid unnecessary filtering and sorting recomputations on large product lists, using searchText, selectedSort, and products as dependencies.
Learn how the useEffect hook synchronizes a component with backend data, using dependencies to control when it runs and a cleanup function that executes on unmount.
Learn to implement dark mode in a Tailwind CSS app by adding a custom dark variant and using dark: utilities, while planning to migrate the backend from H2 to MySQL.
Develop a theme toggle feature in a UI app by adding a header button that switches between light and dark modes using tailwindcss, faSun/faMoon, and theme variables normalbg and darkbg.
Implement a dark theme toggle by adding or removing the dark class on the HTML element, activating Tailwind dark mode styles like bg-normalbg and bg-darkbg.
Implement dark mode across the app by updating header, logo, search, dropdown, product cards, and footer using dark theme classes, borders, and text colors to ensure visibility.
Learn how to persist dark mode by storing the selected theme in local storage and reading it on first render with useEffect, so your preference survives refreshes.
Discover how theme toggling affects components re rendering in React, and learn strategies to optimize rendering performance within a Java full stack context.
Upgrade from H2 to MySQL using Docker to run a local eazystore database, and learn to start a MySQL container with port 3306 and persistent data.
migrate from h2 to mysql in a spring boot app by adding the mysql driver, removing h2, and configuring environment variable based database credentials and connection details.
Learn how to implement routing in a React single page application, navigating to home, about, contact, login, and cart pages while loading data from a backend Rest API.
Learn to implement routing in a React app with react-router-dom by defining routes with createBrowserRouter and RouterProvider, mapping paths to components, and addressing header and footer consistency.
Learn to implement dynamic routing with React Router Outlet, render child components under a persistent header and footer, and use index routes for default content to avoid full page reloads.
Replace anchor elements with Link and NavLink from react-router-dom to enable client-side routing, prevent page refresh, and highlight the active link with isActive for a true single page application.
Build a custom error page in react-router-dom with errorElement on the parent route and useRouteError to show status and messages, ensuring a consistent 404 UX.
Explore the alternative routing syntax using createRoutesFromElements and Route, define parent and child routes with index and error element, and compare it to the older approach for complex apps.
Enhance react routing by styling the about, contact, login, and cart UIs with a PageTitle component and HTML/CSS. Implement dark and light modes, navigate with links, and add form validations.
Explore how loader functions in react router fetch backend data before rendering the Home component, comparing with useEffect, and discuss their impact on performance and flickering interface.
Learn to read loader data in a React app using useLoaderData from React Router Dom, fetch product data in the Home component or its children, and handle loading and errors.
Use React Router's useNavigation to show loading feedback while loader data loads, render a loading UI during loading states, and display the outlet when navigation completes.
Explore programmatic navigation with useNavigate in React Router Dom to navigate to routes, pass state, and control history with replace, -1, and +1, while reading location.state with useLocation.
Build a backend contacts REST API by creating a contacts table with audit fields, a contact entity, DTO, and repository, and expose a post endpoint at api/v1/contacts.
Create a contact action function inside the contact component and use Form. Read form data with request.formData, build a contactData JSON, and post to the backend using Axios and ContactRequestDto.
Reset form after a successful save by returning a boolean from the action function. Use useActionData to read it, and useEffect, useRef, and useNavigation to handle reset and submission state.
Learn to display confirmation messages in a React app with react-toastify by wrapping the app in ToastContainer and triggering toast on submit, with optional redirect.
Learn how to manually submit forms with the useSubmit hook from react-router-dom, including preventing default, confirming user intent, and posting form data to the backend.
Explore dynamic routing in React with Link, a path with a dynamic segment (products/:productId), configure routes in main.jsx, and read productId via useParams in ProductDetail.
Learn to pass product data between pages using route state and useLocation, reading forwarded product details from location.state to render a product detail page without extra API calls.
Enhance the product detail page with image, name, description, price, and quantity; wire up add to cart and view cart navigation; implement a zoom-on-hover image effect.
Master react-router-dom routing concepts, including JSON syntax for defining routing configurations, loader and action functions, dynamic routes with useParams and state, and navigation hooks like useNavigate and useLocation.
Are you ready to become a confident Java Full Stack Developer? This hands-on course will teach you how to build real-world web applications using React for the frontend and Spring Boot for the backend. You'll master REST APIs, JWT authentication, Redux Toolkit, Spring Security, Spring Data JPA, MySQL, Stripe payments, Tailwind CSS, and more.
From creating your first “Hello World” apps to securing endpoints, managing state, and deploying full-featured e-commerce apps, this course covers it all — with beautifully structured lectures, engaging demos, and tons of practical knowledge.
Whether you're a beginner or someone upgrading to modern full stack technologies, this course will guide you step-by-step with real projects and best practices to launch your full stack development career.
What You’ll Learn :
Section 1: Welcome & Course Setup
Understand the course agenda, goals & expectations
Install and configure VS Code, IntelliJ, React, and Spring Boot apps
Learn about libraries vs frameworks and tool setup
Section 2: React Basics – JSX to Vite
Understand JSX, Virtual DOM, transpilation (Babel), and Vite
Explore React project structure, semantic versioning, and dependencies
Section 3: Everything About React Components
Build functional components
Learn about props, children, fragments, dynamic components & more
Section 4: Styling React Apps Like a Pro
Style components using CSS, inline styles, CSS modules, and Styled-Components
Explore Bootstrap integration and customization
Section 5: Styling with Tailwind CSS
Configure Tailwind in React, explore utility classes
Build responsive layouts and custom themes using Tailwind
Section 6: Spring Framework Core Concepts
Learn IoC, DI, Spring Beans, and bean wiring techniques
Use annotations like @Bean, @Component, @Primary, and @Qualifier
Section 7: Building Backend with Spring Boot
Create REST APIs using Spring Boot
Integrate with H2 & MySQL databases
Implement DTO pattern and understand CORS
Section 8: React Hooks & Events
Understand and apply useState, useEffect, useMemo hooks
Build interactive UI with event handlers and reusable components
Section 9: Dark Mode & MySQL Migration
Implement dark mode toggle and theme persistence
Migrate from H2 to MySQL using Docker
Section 10: React Routing Mastery
Define routes, use Link, NavLink, useNavigate, useLocation
Implement loaders, actions, error boundaries, and dynamic routing
Section 11: Robust Spring Boot APIs
Enable hot reload with DevTools
Master @RequestBody, @PathVariable, @RequestParam, @RequestHeader
Use RequestEntity, ResponseEntity, and global exception handling
Section 12: Shopping Cart with React Context API
Implement Context API, prop drilling solution, state lifting
Use useReducer to manage complex cart logic
Section 13: Spring Security Fundamentals
Understand Spring Security flow, static credentials, and login API
Learn about hashing, encoders, InMemoryUserDetailsManager
Introduce JWT, Auth Context, protected routes, and register API
Section 14: Security with Database Integration
Persist users in MySQL using JPA and Spring Security
Define custom AuthenticationProvider
Implement @OneToOne mapping for profile/address management
Section 15: Implementing Authorization
Understand ROLE vs AUTHORITY
Define OneToMany relationships to manage user roles and authorization
Section 16: Understanding CSRF Attacks
Learn what CSRF is and how to protect against it
Implement CSRF protection using Spring Security
Section 17: Stripe Checkout Integration
Set up Stripe, build checkout UI and backend APIs
Handle address validation and token expiration
Build orders API and link payments to data
Section 18: Orders & Admin Panels
Create REST APIs for orders, messages, and admin views
Secure actuator & Swagger endpoints with proper roles
Section 19: Custom Queries in JPA
Use @Query, JPQL, native SQL, DML queries
Understand @NamedQuery, @Transactional, and audit updates
Section 20: @ManyToMany & Spring Caching
Implement Many-to-Many relationships
Use @Cacheable, @CacheEvict, TTL config for better performance
Section 21: Spring Boot Profiles & Config
Learn to read properties via @Value, @ConfigurationProperties
Use @PropertySource, and Spring Boot profiles
Handle conditional bean creation for environments
Section 22: Redux & Redux Toolkit
Compare Redux vs Context API, useReducer
Learn about Redux store, slices, DevTools, and implement cart/auth logic