Unique Spring Boot E-Commerce Application Development

Real-Life Online Store using Angular Standalone Components, Keycloak Server ,Stripe API and Docker-Job-ready skills

Ratings: 5.00 / 5.00




Description

  • Learn to develop a complete shopping website using Java, Spring Boot, Angular Standalone Components, Bootstrap, Stripe API,  Keycloak Authorization Server, Redis  and MySQL database


  • The course will be delivered in 4 installments, the first of which is already published

    • Installment I:

      • Backend Spring Boot Resource Server Development

      •   Learn how to setup your development environment to be able to develop Spring Boot applications

          (Installing Spring Tool Suite, Maven, Lombok, Docker Desktop, DBeaver)

      •   Learn how to create a Spring Boot 3.1.5 Resource Server


      •   Learn how to create a MySQL docker container to store products, categories and brands using Spring   Data JPA           with Hibernate

      •   Learn how to create Resource Server web end-points that will return products list according to a a set of criteria

      •   Learn how to code Specification pattern that makes use of the Criteria and Query objects from  Jakarta that will  in turn make the querying and filtering products from the database in an Object Oriented manner

      •   Testing of Rest Controller end-points using Postman

      • Angular Frontend Development

      •   Learn how to setup your  development environment to be able to create Angular Single Page Applications using Angular 16( Install Visual Studio Code IDE, node, npm and angular cli packages )

      •   Learn the difference between Modular Angular App and Angular Standalone components App Development

      •   Learn how to create Angular SPA with  Standalone Components

      •   Learn to how to create a Standalone Shop Component  in the  Angular App that will let  customers browse through the online shop  fetching  products from the Resource server  given a criteria set

      •   Learn how to create a ShopService class in the angular frontend that makes http calls (using HttpClient object) to the backend server to fetch the required products, categories and brands from there

      •   Learn how to integrate your front-end application with Bootstrap 5 , ngx-bootstrap and font-awesome libraries

      •   Learn how to use HttpParams object from Angular to collect product, brand, category, page and sorting parameters and send to the backend server with the http call in one packet

      •   Learn how to add a pagination component to your app  from ngx-bootstrap

      •   Learn how to add     select boxes for filtering based on brand and  category  criteria and develop their code behind.

      •   Learn how to add a sorting type selection box and create the code behind it

       

    • Installment II: (31/01/2024)

      • Backend   BasketApi Part of The Resource Server Development

      •   Learn how to install the redis server maven dependencies into the resource server

      •    Learn how to configure redis server to be used as a basket cache store

      •    Learn how to create Model classes suitable for redis storage

      •    Learn how to create a CrudRepository for redis storage of Basket data

      •    Learn how to create a BasketController for  createBasket/getBasket/deleteBasket end-points

      •   Learn how to disable the csrf for create and delete methods.

      •   Testing of the BasketController methods by postman

      •   Testing of the Redis server by redis-cli shell

      • FrontEnd Cart Module Development

      •   Creating cart module model classes

      •   Creating CartService class

      •   Tutorial on BehaviorSubjects

      •   Developing Cart and cartDetails Components

      •   Linking Cart and CartDetails components via @Output decorators

      •   Lazy loading of  Shopping Cart Component


    • Installment III: (12/02/2024)

      • Securing of the Application

        • OAuth2 & OpenID Connect Principles

        • The need for an independent Authorization Server

        • Grant Flows in the OAuth2 Paradigm

        • Client Types and How to Select a Grant Flow depending on the Client Type

        • OAuth2 Major Actors

        • OAuth2 Authorization Code Grant Flow Explained

        • OAuth2 Authorization Code Flow With PKCE Explained

        • Keycloak Server installation

        • Creating Realms, Clients and Users in Keycloak Server

        • Interfacing Resource Server with Keycloak Server

        • Testing Keycloak Server-Resource Server-Client-User  marriage using Authorization Code Flow Grant Type

        • Testing Keycloak-Resource Server-Client-User based on roles of the user

        • Testing Keycloak-Resource Server-Client-User combination using Authorization Code With PKCE Grant Flow

        • Adding an angular client in the Keycloak Server

        • Keycloak Server-Angular App Connection Setup

        • Building an AuthGuard object in Angular Application to protect an Angular routerLink-Forcing users to login for protected urls.

    • Information about the rest of the installments and their contents with their respective  uploading dates  are given in the related video.

What You Will Learn!

  • How to create a Spring Boot Backend API that is complaint with Oauth2/OpenId Connect Principles
  • How to create a Frontend in Angular Standalone Components
  • How to set up a Keycloak OAuth2/OpenId Connect complaint Authorization Server and use it to secure both the backend and the frontend.
  • How to integrate your Angular frontend and Spring Boot backend with Stripe API for payments via credit card and also show how Webhooks from Stripe can be used.
  • How to secure Angular Frontend with Oauth2 Authorization Code Grant Flow with PKCE scheme, which is accepted as the safest way of securing SPAs.
  • They will learn how easy it is to create applications with less code using Angular Standalone Components

Who Should Attend!

  • Intermediate to Advanced Java developers will be able to follow it easily. Software developers with approx. 6 months of an OOP language experience may also have a go at it but they need to put in more effort to crack it.