Pular para conteúdo

Fastapi-tpl

Sobre

Modelo de estrutura inicial para projetos em fastapi.

Tabela de Conteudos

Status do projeto

Em desenvolvimento

Recursos

  • [X] Aplicação base
  • [X] Database
  • [ ] Logging
  • [X] Avisos
  • [X] Tarefas
  • [ ] Estatisticas
  • [X] Autenticação
  • [ ] Permissões X - Completo, P - Parcial

Pre-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Python, Taskfile

Além disto é bom ter um editor para trabalhar com o código como VSCode, Kate

Utilizando este template

Clonar este repositório

Renomear o nome do projeto

Acessar o diretório da aplicação

cd <Nome do projeto/aplicação>

Executar o comando

task init

Dependencias

Instalar o Ambiente virtual python VirtualEnv

python -m venv .venv --upgrade-deps

Habilitar o ambiente virtual python

source .venv\bin\activate

Instalar as dependências do projeto:

task install

Instalar as dependências de desenvolvimento do projeto:

task install-dev

Instalar as dependências de desenvolvimento do projeto:

task install-dev

Instalar as dependências de documentacao do projeto:

task install-docs

Instalar as dependências de verificação/formatação do código do projeto:

task install-lint

Instalar as dependências de testes do projeto:

task install-test

Instalar todas as dependências de desenvolvimento e execução do projeto:

task install-all

Gerar Secret Key

Para gerar o secret key da aplicação usando python execute:

import secrets
secrets.token_urlsafe(32)

Copiar o arquivo ex.secrets.toml para .secrets.toml.

Este arquivo deve ser adicionado em seu arquivo .gitignore, pois não deve ser carregado no repositório, por conter informações privadas, como senhas e tokens. Inserir a chave gerada no arquivo .secrets.toml

Verificação de segredos (antes de commitar)

  1. Instale pre-commit: pip install pre-commit
  2. Ative o hook: pre-commit install
  3. Execute manualmente: pre-commit run --all-files
  4. Verifique com script: ./scripts/check-secrets.sh
  5. Use o task helper: task check-secrets

Importante: não comite .secrets.toml ou .secrets.database.toml.

Banco de Dados

Inicializar o banco de dados

Suba o Postgres:

docker compose -f docker-compose-postgres.yml up -d

Garanta que o banco usado no ambiente Dynaconf exista e combine com as credenciais:

# .secrets.database.toml
[development]
database = {driver = "postgresql+psycopg", host = "localhost", port = 5432, name = "fastapi_tpl_dev", user = "postgres", password = "postgres", echo = true}

Criando e aplicando Migracoes

Crie uma nova migração:

./.venv/bin/alembic revision --autogenerate -m "create avisos table"

Aplique a migração:

./.venv/bin/alembic upgrade head

Extras

Configurações do vscode

Taskfile

Listar todos os comandos disponívels via taskfile, executar o comando

task --list

Tecnologias

Dynaconf, Python, MkDocs

Testes

Para realizar testes, alterar a constante env do arquivo settings.toml para "testing"

Para realizar os testes execute o comando:

# todos os testes
task test
# todos os testes com geração de relatório de cobertura de testes
task test-coverage
# tests marcados
# Adicionar marcação no teste e executar o comando:
task test-mark:<NOME DO MARKER>

Para ver o relatório de testes em html: Abrir no navegador o arquivo index.html da pasta htmlcov.

Para selecionar testes selecionados, adicionar aos testes desejados:

@pytest.mark.<mark>

Executar o comando:

task test-mark:<mark>

Desenvolvimento

Para rodar o programa:

task start

Se quiser usar o comando start definido no pyproject.toml, instale primeiro o projeto no ambiente virtual e ative o venv:

source .venv/bin/activate
./.venv/bin/python -m pip install -e .
start

Documentacao

A documentação utiliza mkdocs com material for mkdocs, editar o arquivo mkdocs.yml para alterar as formatações e estilos.

Para atualizar a documentação:

Atualizar os arquivos README.md, CODE_OF_CONDUCT.md, CONTRIBUTING.md, CREDITS.md, LICENSE.txt

Rodar os comandos:

# Para copiar os arquivos necessários:
task docs-prepare
# Para inserir na documentação o relatório de testes (coverage) execute
task docs-coverage
# Para gerar a documentacao
task docs

Para remover todos os arquivos da pasta docs

task docs-clean

Codigo de Conduta

Código de Conduta

Contribuindo

Contribuindo

Autor

Valmir França

Creditos

Creditos

Licenca

License: MIT