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.