Skip to content

Configuração do Projeto

Este documento descreve as configurações necessárias para executar a API de Gerenciamento de Carros.

Variáveis de Ambiente

O projeto utiliza um arquivo .env para armazenar as variáveis de ambiente sensíveis. Crie um arquivo .env na raiz do projeto com as seguintes variáveis:

DATABASE_URL=sqlite+aiosqlite:///./car.db
JWT_SECRET_KEY=sua_chave_secreta_aqui
JWT_ALGORITHM=HS256
JWT_EXPIRATION_MINUTES=30

Descrição das Variáveis

  • DATABASE_URL: URL de conexão com o banco de dados. O padrão usa SQLite, mas pode ser alterado para PostgreSQL ou MySQL.
  • JWT_SECRET_KEY: Chave secreta usada para assinar os tokens JWT. Substitua pelo valor seguro em produção.
  • JWT_ALGORITHM: Algoritmo usado para codificar os tokens JWT (padrão: HS256).
  • JWT_EXPIRATION_MINUTES: Tempo de expiração dos tokens JWT em minutos (padrão: 30).

Configuração do Banco de Dados

SQLite (Padrão)

O banco de dados padrão é SQLite, que cria um único arquivo (car.db) no diretório raiz. Esta configuração é adequada para desenvolvimento e testes.

PostgreSQL

Para usar PostgreSQL, altere a variável DATABASE_URL:

DATABASE_URL=postgresql+asyncpg://usuario:senha@localhost:5432/nome_do_banco

Certifique-se de instalar as dependências adicionais:

poetry add asyncpg

MySQL

Para usar MySQL, altere a variável DATABASE_URL:

DATABASE_URL=mysql+aiomysql://usuario:senha@localhost:3306/nome_do_banco

Certifique-se de instalar as dependências adicionais:

poetry add aiomysql

Configuração do Servidor

FastAPI

A aplicação é configurada em car_api/app.py e pode ser iniciada com diferentes opções:

# Modo de desenvolvimento com recarga automática
poetry run fastapi dev car_api/app.py

# Modo de produção
poetry run uvicorn car_api.app:app --host 0.0.0.0 --port 8000 --workers 4

Parâmetros de Configuração

  • --host: Endereço IP para escutar (padrão: 127.0.0.1)
  • --port: Porta para escutar (padrão: 8000)
  • --workers: Número de workers (padrão: 1, útil apenas em produção)
  • --reload: Ativa recarga automática (apenas em desenvolvimento)

Configuração de Segurança

JWT Tokens

A API utiliza autenticação baseada em JWT (JSON Web Tokens). Os tokens têm validade de 30 minutos por padrão, conforme definido na variável JWT_EXPIRATION_MINUTES.

Hash de Senhas

As senhas são armazenadas com hash usando Argon2, um algoritmo de hashing de senha resistente a ataques de força bruta.

Configuração do Alembic (Migrações)

O projeto utiliza Alembic para gerenciamento de migrações de banco de dados. O arquivo de configuração está em alembic.ini.

Para executar migrações:

# Aplicar todas as migrações pendentes
poetry run alembic upgrade head

# Criar nova migração
poetry run alembic revision --autogenerate -m "Descrição da migração"

# Reverter última migração
poetry run alembic downgrade -1

Configuração do Linter e Formatador

O projeto utiliza Ruff para linting e formatação de código. As configurações estão em pyproject.toml:

[tool.ruff]
line-length = 79
exclude = [
    # Lista de diretórios excluídos
]

[tool.ruff.lint]
preview = true
select = ['I', 'F', 'E', 'W', 'PL', 'PT']
ignore = ['PLR2004', 'PLR0917', 'PLR0913']

[tool.ruff.format]
preview = true
quote-style = 'single'

Para executar o linter e formatador:

# Verificar problemas de estilo
poetry run ruff check

# Corrigir automaticamente problemas
poetry run ruff check --fix

# Formatar código
poetry run ruff format

Configuração do MkDocs

A documentação é gerada com MkDocs Material. As configurações estão em mkdocs.yml:

site_name: Car API
site_description: Uma API REST completa para gerenciamento de carros e usuários
site_author: Rolv

theme:
  name: material
  palette:
    primary: green
  font:
    text: Roboto

nav:
  - Início: index.md
  # Outras páginas de documentação

plugins:
  - search

Para servir a documentação localmente:

poetry run mkdocs serve -a 127.0.0.1:8001

Configuração de Logs

Atualmente, o projeto não possui configuração específica de logs, mas o FastAPI fornece logs básicos. Em produção, recomenda-se configurar logs mais detalhados com bibliotecas como structlog ou logging.

Configuração para Produção

Para ambiente de produção, considere as seguintes configurações:

  • Use um banco de dados robusto como PostgreSQL
  • Configure uma chave JWT segura e rotacionável
  • Defina limites de taxa de requisições
  • Configure HTTPS/TLS
  • Monitore o desempenho e erros
  • Configure backups regulares do banco de dados