API criada com o propósito de prover o gerenciamento das transferências entre contas de um banco digital.
A arquitetura da aplicação visa aplicar os conceitos do Domain-Driver Design, Eric Evans, e da Hexagonal Architecture, de Alistair Cockburn.
A aplicação, feita em Go, depende do próprio módulo, e de pelo menos uma instância MongoDB.
A mesma é distribuída através de containers Docker.
Todas as dependências de pacotes estão relacionadas em go.mod, que é utilizado para gerenciamento das mesmas.
- Go 1.15
- BRDoc 1.1.2
- mongo-driver 1.4.2
- httprouter 1.3.0
- crypto 0.0.0-20201016220609-9e8e0b390897
- jwt 3.0.0
- logrus 1.7.0
Para baixa-las, com Go instalado na sua máquina:
$ go mod download
A aplicação possui distribuição via Docker, e possui um arquivo docker-compose, sendo este o modo mais fácil de executa-la localmente.
Além disso, possui uma especificação OpenAPI 3 através do arquivo openapi.yml.
A mesma é gerenciada via variáveis de ambiente, segue abaixo a tabela:
Nome | Descrição |
---|---|
APP_PORT | Porta a ser escutada pela aplicação para novas requisições |
APP_LOG_LEVEL | Nível de log estruturado da aplicação |
APP_DOCUMENT_DB_HOST | Host da instância do MongoDB |
APP_DOCUMENT_DB_PORT | Porta da instância do MongoDB |
APP_DOCUMENT_DB_USERNAME | Usuário da instância do MongoDB |
APP_DOCUMENT_DB_SECRET | Senha da instância do MongoDB |
APP_DOCUMENT_DB_NAME | Nome do banco default da instância do MongoDB |
APP_JWT_GATEKEEPER_SECRET | Segredo de geração do token JWT |
APP_JWT_GATEKEEPER_ISSUER | Emissor do token JWT |
Para executar via docker-compose
$ docker-compose up --build -d
A aplicação está sob a licença MIT
Agradecimento em especial a todos os autores das bibliotecas de terceiros utilizadas, e citadas acima.
E aos conteúdos, e seus autores, em que me baseei para a construção dessa aplicação: