This project is a comprehensive banking application developed in Go, following the principles of Hexagonal Architecture (also known as Ports and Adapters pattern). This architectural pattern allows the separation of concerns, making the codebase easier to maintain, more adaptable to changes, and highly testable.
In this application, the core business logic is isolated from external concerns through well-defined interfaces. These interfaces represent the 'ports', and the implementations that adapt the application to external factors (like databases or web services) are the 'adapters'. This means that the business logic doesn't know anything about who is invoking it or what will be done with the results.
The application provides modules for account management, customer relations, and transaction processing. Each module is designed to be independent and can be developed, tested, deployed, and scaled separately.
Whether you're a developer seeking to understand how banking systems work, or a student studying software architecture, this project provides a solid starting point. It's not just about the code - it's about learning and understanding the design principles and architecture that underpin effective banking software.
Clone the repository and navigate into the directory:
git clone https://github.com/username/project.git
cd project
Install the dependencies:
go mod download
Run the main file:
go run main.go
The project is structured into several packages:
app
: Contains the application logic, including handlers and middleware.domain
: Contains the domain models and repositories.dto
: Contains data transfer objects.mocks
: Contains mock objects for testing.service
: Contains services that implement business logic.resources
: Contains resources such as SQL scripts.
Authentication logic is separated into its own repository, and error handling and logging are handled by a shared library.
- Authentication Service: This repository contains the authentication logic for the banking application.
- Shared Library: This repository contains shared components such as error handling and logging.
Run the tests with:
go test ./...
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.