Microbank
A minimalist implementation of a banking server, exposing endpoints for the following purposes:
- creating a banking customer
- creating an account for a particular customer using one of the accepted currencies
- transfering money between customer accounts
- retrieving all accounts created by the customer in the current session
- retrieving one account created by the customer in the current session
Read NOTE.md for detailed information about this project
Run Microbank
You can run Microbank in several different ways:
1. Docker Compose - (The easiest)
- Download Docker
- Clone this repository
- Comment out the environment variables for localhost and uncomment the ones for docker compose environment in app.env
- Start services
docker compose up
2. Localhost (Macbook) - (Requires more installations on your machine)
Microbank implements HTTP, gRPC Gateway and gRPC servers
gRPC Gateway server serves both HTTP and gRPC requests
Pre-requisites
- Homebrew
- PostgreSQL. Follow the download instructions on the download section of the Postgres App install page
- Go
- golang-migrate. Run
brew install golang-migrate
- gow or go watch
- Install redis
Run HTTP server
- Ensure these lines of code are commented out in the main function
go runGatewayServer(config, store)
runGrpcServer(config, store)
go mod download
-
Start postgresql server
-
Start server
make server
- Query the endpoints using the microbank.rest.http file or any rest client out there
Run gRPC Gateway server
- Ensure this line of code is commented out in the main function
runGinServer(config, store)
- Ensure these lines of code are uncommented in the main function
go runGatewayServer(config, store)
runGrpcServer(config, store)
go mod download
-
Start postgresql server
-
Start server
make server
- Query the endpoints using the microbank.gateway.http file or any rest client out there
Run only gRPC server
- Ensure these lines of code are commented out in the main function
runGinServer(config, store)
go runGatewayServer(config, store)
- Ensure this line of code is uncommented in the main function
runGrpcServer(config, store)
make evans