Mini Bank is a microservices-based application that provides a simple banking system with features such as account creation, balance transfer, and account retrieval. The application is designed using a microservices architecture, where each service is responsible for a specific business function.
The architecture of Mini Bank consists of the following microservices:
svc-transaction
: This service is responsible for handling all the transaction-related operations, such asDEPOSIT
,TRANSFER
, andWITHDRAWAL
. It servesGRPC
methods.svc-account
: This service manages the account-related operations, such as account details retrieval, creating, and updating balances. It servesGRPC
methods.api-gateway
: This service is responsible for centralizing user requests and orchestrating redirects to the necessary services. It servesHTTP
endpoints.
To get started with Mini Bank, follow these steps:
-
Clone the repository:
git clone https://github.com/buemura/minibank.git
-
Setup environment
sh env_up.sh
-
Install services dependencies
# API gateway cd apps/api-gateway && go mod tidy && cp .env.example .env # Account Service cd apps/svc-account && go mod tidy && cp .env.example .env # Transaction Service cd apps/svc-transaction && go mod tidy && cp .env.example .env
-
Start services
# API gateway cd apps/api-gateway && go run cmd/http/main.go # Account Service GRPC cd apps/svc-account && go run cmd/grpc/main.go # Transaction Service GRPC cd apps/svc-transaction && go run cmd/grpc/main.go # Transaction Service Consumer cd apps/svc-transaction && go run cmd/consumer/main.go