Projeto com a base com o AuthToken
do DRF
. As libs utilizadas foram: django
, restframework
, gunicorn
, python-decouple
, drf-spectacular
e django-extensions
. Ferramentas de desenvolvimento utilizadas foram ruff
, black
, pytest
e taskipy
.
A documentação da api
fica disponível em /docs/
.
Para o banco de dados foi usado a imagem postgres:16.1-alpine
.
Subindo o banco de dados com taskipy
:
task up_db
Ou pode-se subir direto com o docker compose
:
docker compose -f docker-compose-dev.yml up database -d
Para instalar as dependencias:
poetry install --no-root
Subindo o servidor:
python manage.py runserver
Rodando os testes:
pytest
Foi usado o pacote pytest-randomly
então a ordem dos teste é aleatoria. Para rodar os teste sempre na mesma ordem:
pytest -p no:randomly
Formatar o código com black
e ruff
:
task fmt
Para usar o ruff
como linter:
task linter
Para subir o servidor local com gunicorn
task server_prod
Caso você queria é possivel desenvolver interiamente em conteiners
. A imagem da app
é definida em Dockerfile.dev
e a orquestração dos containers
em docker-compose-dev.yml
.
Para subir os conteiners
da aplicação e banco de dados:
docker compose -f docker-compose-dev.yml up -d
Para rodar os testes.
docker compose -f docker-compose-dev.yml run api pytest
Para ver os logs
docker compose -f docker-compose-dev.yml logs
Caso você queria acompanhar o log de um serviço específico:
docker compose -f docker-compose-dev.yml logs api -f
Formatar o código com black
e ruff
:
docker compose -f docker-compose-dev.yml run api task fmt
Para usar o ruff
como linter:
docker compose -f docker-compose-dev.yml run api task lint
Para simular o ambiente de produção simplificado foi usado o nginx
como proxy reverso
escutando na porta 80
. Os serviços do app e do banco de dados estão isolados dentro da rede do docker
. A imagem da app
é definida em Dockerfile.prod
e a orquestração dos containers
em docker-compose-prod.yml
.
docker compose -f docker-compose-prod.yml up -d