HenriqueCCdA / drf_authtoken

🦕 Projeto base com DRF e auth_token

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

drf_authtoken

Backend

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/.

Subindo o banco de dados

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

Desenvolvimento local

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

Desenvolvimento com Docker

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

Simulando o ambiente de produção

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

About

🦕 Projeto base com DRF e auth_token

License:MIT License


Languages

Language:Python 99.6%Language:Dockerfile 0.4%