Welcome to Go Clean Architecture
- The Go Clean Architecture is a user-friendly solution designed for a range of banking tasks, including account creation, account listing, checking the balance of specific accounts, facilitating transfers between accounts, and compiling transfer records.
Architecture
- This represents an endeavor to implement a clean architecture. In the event that you're not yet familiar with it, I'd like to provide you with a reference.
Example create account use case
Requirements/dependencies
Getting Started
make init
- Starting API in development mode
make up
make test
- Run tests local (it is necessary to have golang installed)
make test-local
make test-report
make test-report-func
make logs
API Request
Endpoint |
HTTP Method |
Description |
/v1/accounts |
POST |
Create accounts |
/v1/accounts |
GET |
List accounts |
/v1/accounts/{{account_id}}/balance |
GET |
Find balance account |
/v1/transfers |
POST |
Create transfer |
/v1/transfers |
GET |
List transfers |
/v1/health |
GET |
Health check |
Test endpoints API using curl
Request
curl -i --request POST 'http://localhost:3001/v1/accounts' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "Test",
"cpf": "070.910.584-24",
"balance": 100
}'
Response
{
"id":"5cf59c6c-0047-4b13-a118-65878313e329",
"name":"Test",
"cpf":"070.910.584-24",
"balance":1,
"created_at":"2020-11-02T14:50:46Z"
}
Request
curl -i --request GET 'http://localhost:3001/v1/accounts'
Response
[
{
"id": "5cf59c6c-0047-4b13-a118-65878313e329",
"name": "Test",
"cpf": "070.910.584-24",
"balance": 1,
"created_at": "2020-11-02T14:50:46Z"
}
]
Request
curl -i --request GET 'http://localhost:3001/v1/accounts/{{account_id}}/balance'
Response
{
"balance": 1
}
Request
curl -i --request POST 'http://localhost:3001/v1/transfers' \
--header 'Content-Type: application/json' \
--data-raw '{
"account_origin_id": "{{account_id}}",
"account_destination_id": "{{account_id}}",
"amount": 100
}'
Response
{
"id": "b51cd6c7-a55c-491e-9140-91903fe66fa9",
"account_origin_id": "{{account_id}}",
"account_destination_id": "{{account_id}}",
"amount": 1,
"created_at": "2020-11-02T14:57:35Z"
}
Request
curl -i --request GET 'http://localhost:3001/v1/transfers'
Response
[
{
"id": "b51cd6c7-a55c-491e-9140-91903fe66fa9",
"account_origin_id": "{{account_id}}",
"account_destination_id": "{{account_id}}",
"amount": 1,
"created_at": "2020-11-02T14:57:35Z"
}
]
Git workflow
Code status
Author
License
Copyright © 2020 GSabadini.
This project is MIT licensed.