Skip to content

izaiasmorais/fastapi-tortoise

Repository files navigation

FastAPI Clean

Introdução

Uma API auto-documentável com FastAPI, Pydantic e Tortoise ORM.

Tecnologias

Estrutura do Projeto

Diretório/Arquivo Descrição
migrations/ Migrações do banco de dados (Aerich)
src/ Código-fonte principal da aplicação
└─ controllers/ Controladores para lidar com requisições HTTP
   └─ auth/ Endpoints de autenticação (sign-up, sign-in, profile)
└─ models/ Modelos do banco de dados (Tortoise ORM)
└─ schemas/ Esquemas de validação de dados (Pydantic)
└─ utils/ Funções utilitárias e helpers
└─ main.py Configuração principal da aplicação FastAPI
└─ database.py Configurações do banco de dados e Tortoise ORM
docker-compose.yml Configuração do PostgreSQL via Docker
pyproject.toml Dependências e configurações do projeto
Makefile Comandos úteis para desenvolvimento

Endpoints

Método Endpoint Descrição Autenticação
GET /health Health check da API
POST /auth/sign-up Registrar um novo usuário
POST /auth/sign-in Fazer login e obter o token de autenticação
GET /auth/profile Obter o perfil do usuário autenticado

Instalação

Clone o repositório na sua máquina:

git clone https://github.com/izaiasmorais/fastapi-clean

Acesse o projeto:

cd fastapi-clean

Instale o UV (se ainda não tiver):

curl -LsSf https://astral.sh/uv/install.sh | sh

Crie e ative o ambiente virtual:

uv venv
source .venv/bin/activate

Instale as dependências:

uv sync

Configure o arquivo .env com suas credenciais (crie baseando-se nas variáveis usadas no código):

SECRET_KEY="seu-secret-key-super-seguro"
ALGORITHM="HS256"
ACCESS_TOKEN_EXPIRE_MINUTES=30
DATABASE_URL="postgresql://postgres:postgres123@localhost:5432/fastapi_auth"

Executando o Projeto

Rode o banco PostgreSQL no Docker:

docker compose up -d

Inicialize as migrações do Aerich (apenas na primeira vez):

uv run aerich init -t src.database.TORTOISE_ORM

Crie a primeira migração:

uv run aerich init-db

Para migrações futuras, use:

uv run aerich migrate
uv run aerich upgrade

Inicie o servidor de desenvolvimento:

make dev

Ou manualmente:

uv run python -m uvicorn src.main:app --reload --host 0.0.0.0 --port 8000

A API estará disponível em: http://localhost:8000

A documentação Swagger estará em: http://localhost:8000 (configurado como página inicial)

Comandos Úteis

Desenvolvimento

# Servidor de desenvolvimento com reload automático
make dev

# Servidor de produção
make start

Migrações

# Inicializar migrações (apenas primeira vez)
uv run aerich init -t src.database.TORTOISE_ORM

# Criar primeira migração
uv run aerich init-db

# Criar nova migração após mudanças nos modelos
uv run aerich migrate

# Aplicar migrações
uv run aerich upgrade

Docker

# Subir apenas o PostgreSQL
docker compose up -d

# Parar os serviços
docker compose down

# Ver logs do PostgreSQL
docker compose logs postgres

About

Uma API auto-documentável com FastAPI, Pydantic e Tortoise ORM.

Resources

Stars

Watchers

Forks