Skip to content

Latest commit

 

History

History
65 lines (39 loc) · 2.12 KB

README.md

File metadata and controls

65 lines (39 loc) · 2.12 KB

Banking DDD Expriment

Este repositório contém uma aplicação escrita em Python >= 3.7 que está dividida em várias camadas. A implementação tenta seguir algumas ideias do DDD e da arquitetura hexagonal.

Dependênias

  • Python 3.7
  • PostgreSQL 13.1

Instalação

É recomandável instalar e utilizar a aplicação a partir da imagem Docker, tudo deve funcionar com a execução deste comando:

$ docker-compose up

Você também pode optar pela instalação local sem ajuda do Docker, neste caso garanta que as dependências sejam atendidas. Também é recomandado que a instalação seja feita utilizando um ambiente virtual do Python. Para iniciar a instalação, rode os comandos:

$ python -m venv .venv && source .venv/bin/activate
$ pip install -r requirements.txt
$ python setup.py install

Agora edite o arquivo .env e informe a URL em formato de DSN para o seu banco de dados. Neste ponto a aplicação já deve estar instalada no seu path virtual e pronta para ser executada.

Para rodar a aplicação, execute:

$ uvicorn banking.api:app --host 0.0.0.0 --reload

A API estará disponível no endereço http://0.0.0.0:8000/.

Desenvolvimento e testes

O desenvolvimento desse experimento levou em consideração a prática da execução de testes de mutação, para verificar a sua saída execute:

$ mut.py --target banking --unit-test tests -c --timeout-factor 0.5

Se quiser apenas executar os testes de integração e unidade, execute:

$ python setup.py test

API e Documentação

Para este projeto o micro framework FastAPI foi escolhido. A cultura de definição de tipos e da convenção em detrimento da configuração torna o desenvolvimento mais ágil e prazeroso.

Outra facilidade que o FastAPI nos traz é a geração automática de documentações do tipo swagger, com a aplicação rodando basta acessar o endereço:

Você deve ver algo semelhante a imagem abaixo:

api documentation

Documentação

Para mais informações acesse a pasta docs.