
In this video, we are going to cover the objective of the course
Here I am sharing the code repository path on GitHub and all the links for tools and resources used in the application
We are going to discuss the necessary tools required for the development
Introduction to Request multiplexer and registering an endpoint with the default multiplexer using standard HTTP library
JSON encoding structs and response headers
XML encoding structs and request headers
Refactoring and application structure. Introducing Go Modules
Introducing gorilla/mux and its routing capabilities
In this video, we are going to learn about the Ports & Adapters in Hexagonal architecture, principles for setting up Hexagonal architecture and application design
In this video, we will learn to implement the Hexagonal architecture in our banking application. We will start small and will put the application structure in place
Setting up a MySQL connection pool and building a database adapter. Repository pattern and Injecting the dependency at the time of application wiring
Getting a single customer from the server-side and the case for error handling
Setting up error handling infrastructure. Handling internal server and not found error
Improving the design for error handling
Designing a solution for cross-cutting concerns. Need for structured logging and introducing uber/zap
Introducing Sqlx and refactoring the server-side layer with Sqlx
Introducing the DTO and decoupling the domain
Application configuration using the environment variables
Domain and Secondary port and its implementation
POST verb and incoming request validation
In this video we will learn the Authentication & Authorization strategy we are going to follow in this section
Introducing JWT tokens, storing claims inside the token and token validity
Auth Server implementation, user roles, and defining role-based access control. Generating token after successful authentication
Introduce the middleware component for verifying the API authorization using the token
What to test? State-based testing. Understanding the shorter feedback loop
Understanding the responsibilities of components for unit testing. Difference between mocks and stubs. Generate mocks and rewiring application using the mocks for unit testing the routes
Unit testing the services and mocking the server-side component. Making the new account service better and more readable by refactoring after the tests
Introduction to advance topics
Extracting the logger and AppError package from the banking project and making a go-module out of it.
Integrating banking-lib in banking API
Integrating banking-lib in banking-auth API
Refactoring the verify API and using Claims domain object while parsing JWT token
Introduction to Refresh Tokens
Generating a new access token from a refresh token
In this course, you will learn microservices API development using the Hexagonal Architecture. We will start the development from the scratch. Taking the small steps, we will be building the foundation by continuously improving the design of the application. We will explore how the dependency inversion plays a pivotal role in implementing the Hexagonal architecture.
Later on, we will be building an auth API to manage the Authentication and Authorization of our main application.
By the end of the course, we will learn to unit test various components using state and mocks and will also understand the complexities in testing those components.