Skip to content

Aplicação braba de To-do's, dessa vez Async (Curso FastAPI do Dunossauro - 2025).

Notifications You must be signed in to change notification settings

amanmdest/fastapi_zero

Repository files navigation

FastAPI Zero(Async) em: Listas To-do's ⚡🗒️

FastAPI Postgres Docker Creative Commons License GitHub last commit

O simples bem feito!

>>> API desenvolvida no curso FastAPI do Zero do mestrão @Dunossauro, presença importante na comunidade python. <<<

Projetos Relacionados

Fast Zero - Versão síncrona do projeto.

MADR(Meu Acervo Digital de Romances) - Projeto Final de Conclusão do Curso

Sobre a FastAPI-Zero

  • Nessa API lidamos com o cadastro, autenticação e autorizações de usuários que podem criar, editar e deletar suas respectivas notas que possuem 5 estados de tarefas: 'draft'= rascunho, 'todo'= para fazer, 'doing'= fazendo, 'done'= feito, 'trash'= descarte

Pontos de Destaque

  • Agora totalmente assíncrono, o projeto conta com os recursos do FastAPI e do SQLAlchemy para operações mais eficientes e escaláveis.
  • TDD e cobertura da API com testes determinísticos.
  • Schemas, manipulação de modelos de dados com Pydantic e SQLAlchemy.
  • Migrações de banco de dados com alembic.
  • Autenticação e autorização com JWT.
  • Introdução de conceitos e boas práticas como 12 fatores e variáveis de ambiente.
  • Containerização com docker e docker-compose, e criação de uma imagem PostgreSQL.
  • Pipeline/Workflow automatizado de Integração Contínua(CI) com GitHub Actions.
  • Deploy pela plataforma Fly.io.

Bibliotecas | Ferramentas

  • Python 3.12 -> Última versão Python testada.
  • FastAPI -> Web Framework de alto desempenho para construir API's com Python.
  • uvicorn -> Servidor ASGI.
  • SQLAlchemy -> Biblioteca open-source com Toolkit de SQL e Object Relational Mapper(ORM).
  • Pydantic -> Validação de dados e alguns gerenciamentos de configuração.
  • alembic -> Ferramenta de migração de banco de dados.

🛠️ Dependências Desenvolvimento:

  • poetry -> Gerenciador de pacotes do Python (usado para configurar o ambiente).
  • taskipy -> Executor de tarefas para projetos python.
  • ruff -> Formatador e Linter Python extremamente rápido, escrito em Rust.
  • ignr -> Plugin para gerar um arquivo .gitignore baseado na linguagem que voce definir.
  • PyJWT -> Autenticador entre duas partes, por meio de um token assinado que segue o padrão(RFC-7519)
  • pwdlib -> auxiliar moderno p/ hashing de passwords
  • psycopg-binary -> Adaptador de PostgreSQL para Python.

🧪 Dependências Testes:

  • pytest -> Testes simples e poderosos com Python.
  • pytest-asyncio -> Plugin do pytest que fornece suporte para corrotinas como funçõoes de teste.
  • pytest-cov -> Um plugin para produzir relatórios de cobertura de testes.
  • factory-boy -> Uma biblioteca que permite criar objetos de modelo de teste de forma rápida e fácil.
  • freezegun -> Uma biblioteca que permite "congelar" o tempo em um ponto específico ou avançá-lo conforme necessário durante os testes.
  • testcontainers -> Facilita o uso de contêineres Docker para testes funcionais e de integração.

Rode localmente

  1. Clone o repositório:
  git clone https://github.com/amanmdest/fastapi_zero.git
  1. Instale dependências:
  poetry install
  1. Para rodar o projeto junto ao banco de dados postgres é necessário criar um arquivo .env na raiz do projeto como o do exemplo abaixo:
  .env
  DATABASE_URL="postgresql+psycopg://app_user:app_password@localhost:5432/app_db"
  SECRET_KEY="8bf15dc4b43e98a24f62891ebf090e6839d99bce6c669de759706a243ef73737" # exemplo token_hex
  ALGORITHM="HS256"
  ACCESS_TOKEN_EXPIRE_MINUTES=30
  
  POSTGRES_USER=app_user
  POSTGRES_DB=app_db
  POSTGRES_PASSWORD=app_password
  1. Buildar a imagem e criar/iniciar o conteiner da aplicação junto ao banco de dados (necessário instalar docker-compose):
  docker compose up --build

Ou para rodar o projeto de forma limitada no servidor local Uvicorn sem banco de dados:

  task run

e acesse: http://127.0.0.1:8000/docs

Imagens

fastapi_zero_DER

Diagrama Entidade-Relacionamento

fastapi_zero_coverage

HTML Coverage - Cobertura de testes do projeto

fastapi_zero_endpoints

Documentação Swagger - Endpoints Rotas da Api

About

Aplicação braba de To-do's, dessa vez Async (Curso FastAPI do Dunossauro - 2025).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages