Fastapi-tpl
Sobre
Modelo de estrutura inicial para projetos em fastapi.
Tabela de Conteudos
- Fastapi-tpl
- Sobre
- Tabela de Conteudos
- Status do projeto
- Utilizando este template
- Codigo de Conduta
- Contribuindo
- Autor
- Creditos
- Licenca
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)
- Instale pre-commit:
pip install pre-commit - Ative o hook:
pre-commit install - Execute manualmente:
pre-commit run --all-files - Verifique com script:
./scripts/check-secrets.sh - Use o task helper:
task check-secrets
Importante: não comite
.secrets.tomlou.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
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