🇺🇸 English | 🇫🇷 Français | 🇪🇸 Español
Um template backend FastAPI moderno e pronto para produção com melhores práticas, suporte Docker e ferramentas abrangentes para desenvolvimento rápido.
Este projeto foi criado usando o excelente template cookiecutter-fastapi-backend, que fornece uma base sólida para aplicações FastAPI com melhores práticas e ferramentas modernas.
- Arquitetura - Visão geral da arquitetura do sistema
- Guia de Desenvolvimento - Diretrizes de desenvolvimento local
- Guia de Contribuição - Como contribuir para este projeto
- Resolução de Problemas - Problemas comuns e soluções
- FastAPI - Framework web moderno e rápido para construir APIs
- Docker - Desenvolvimento e implantação containerizada
- PostgreSQL - Base de dados relacional robusta com suporte assíncrono
- Redis - Cache e gestão de sessões
- Celery - Processamento de tarefas em segundo plano
- Alembic - Gestão de migrações de base de dados
- Testes - Suite de testes abrangente com pytest
- Qualidade de Código - Hooks pre-commit, linting e formatação
- Segurança de Tipos - Anotações de tipo completas com validação mypy
- Documentação - Documentação API auto-gerada com Swagger UI
- Docker e Docker Compose
- Python 3.13+ (para desenvolvimento local)
- Gestor de pacotes uv
-
Clonar o repositório:
git clone https://github.com/GabrielVGS/fastapi-base.git cd fastapi-base -
Copiar variáveis de ambiente:
cp .env.example .env
-
Iniciar os serviços:
make up
-
Aceder à aplicação:
- API:
http://localhost:8666/v1/ - Verificação de saúde:
http://localhost:8666/v1/ping - Documentação interativa:
http://localhost:8666/docs - Documentação alternativa:
http://localhost:8666/redoc
- API:
-
Instalar uv (se não estiver já instalado):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Navegar para o diretório do projeto:
cd fastapi-base/ -
Instalar dependências:
uv sync
-
Instalar hooks pre-commit:
make hooks
Inicializar a primeira migração (o projeto deve estar a executar com docker compose up e não conter arquivos 'version'):
make alembic-initCriar novo arquivo de migração:
make alembic-make-migrations "descreva as suas alterações"Aplicar migrações:
make alembic-migrateApós cada migração, pode criar novas migrações e aplicá-las com:
make alembic-make-migrations "descreva as suas alterações"
make alembic-migrateCrie um arquivo .env baseado no .env.example:
PROJECT_NAME- Nome do projeto (padrão: fastapi-base)VERSION- Versão da API (padrão: v1)DEBUG- Ativar modo debug (padrão: True)SECRET_KEY- Chave secreta para JWT e encriptaçãoENV- Ambiente (dev/staging/production)
POSTGRES_USER- Nome de utilizador PostgreSQLPOSTGRES_PASSWORD- Palavra-passe PostgreSQLPOSTGRES_DB- Nome da base de dadosPOSTGRES_HOST- Host da base de dados (padrão: localhost)POSTGRES_PORT- Porta da base de dados (padrão: 5432)POSTGRES_URL- URL completa da base de dados (opcional, auto-gerada se não fornecida)
REDIS_HOST- Host Redis (padrão: redis)REDIS_PORT- Porta Redis (padrão: 6379)REDIS_URL- URL completa Redis (opcional, auto-gerada se não fornecida)
SENTRY_DSN- DSN de rastreamento de erros SentryLOG_LEVEL- Nível de logging (padrão: INFO)CACHE_TTL- Tempo de vida do cache em segundos (padrão: 60)
# Construir e iniciar todos os serviços
make build
# Iniciar serviços (sem construção)
make up
# Parar serviços
make down
# Aceder ao bash do contentor
make bash# Assegurar que PostgreSQL e Redis estão a executar localmente
# Atualizar .env com conexões locais de base de dados/redis
# Executar a aplicação FastAPI
uv run uvicorn src.main:app --reload --host 0.0.0.0 --port 8000Consulte o Makefile para ver todos os comandos disponíveis.
# Desenvolvimento
make up # Iniciar todos os serviços com Docker Compose
make down # Parar todos os serviços
make build # Construir e iniciar serviços
make bash # Aceder ao shell do contentor principal
# Base de Dados
make alembic-init # Inicializar primeira migração
make alembic-make-migrations # Criar nova migração
make alembic-migrate # Aplicar migrações
make alembic-reset # Reiniciar base de dados
make init-db # Inicializar base de dados com dados de exemplo
# Qualidade de Código
make test # Executar suite de testes com cobertura
make lint # Executar linter ruff
make black # Formatar código com black
make isort # Ordenar imports
make mypy # Verificação de tipos
make precommit-run # Executar todos os hooks pre-commit
# Manutenção
make hooks # Instalar hooks pre-commitPor padrão, as dependências são geridas com uv. Por favor visite o link e instale-o.
A partir de ./fastapi-base/ pode instalar todas as dependências com:
uv syncO projeto usa hooks pre-commit para assegurar a qualidade do código. Instale-os com:
make hooksIsto instalará hooks que executam automaticamente antes de cada commit para:
- Formatar código com
black - Ordenar imports com
isort - Analisar código com
ruff - Verificar tipos com
mypy - Executar testes
Executar a suite completa de testes:
make testExecutar testes específicos:
# Dentro do contentor
docker compose exec fastapi-base pytest tests/test_specific.py
# Localmente (se as dependências estiverem instaladas)
uv run pytest tests/test_specific.pyO projeto inclui configurações Docker prontas para produção:
# Construir imagem de produção
docker build -f ops/production.Dockerfile -t fastapi-base:prod .
# Executar contentor de produção
docker run -p 8000:8000 --env-file .env fastapi-base:prod- Definir
DEBUG=Falseem produção - Usar
SECRET_KEYapropriada - Configurar
SENTRY_DSNpara rastreamento de erros - Definir credenciais apropriadas da base de dados
- Usar Redis para gestão de sessões e cache
fastapi-base/
├── fastapi-base/ # Diretório principal da aplicação
│ ├── src/ # Código fonte
│ │ ├── core/ # Configuração e definições principais
│ │ ├── models/ # Modelos da base de dados
│ │ ├── api/ # Rotas e endpoints API
│ │ ├── db/ # Utilitários da base de dados
│ │ ├── migrations/ # Migrações da base de dados Alembic
│ │ └── main.py # Ponto de entrada da aplicação
│ ├── tests/ # Suite de testes
│ ├── pyproject.toml # Dependências Python e configuração de ferramentas
│ └── Dockerfile # Imagem Docker de desenvolvimento
├── ops/ # Operações e implantação
│ └── production.Dockerfile # Imagem Docker de produção
├── docs/ # Documentação
├── docker-compose.yml # Configuração do ambiente de desenvolvimento
├── Makefile # Comandos de desenvolvimento
└── .env.example # Template de variáveis de ambiente
Damos as boas-vindas às contribuições! Por favor consulte as nossas Diretrizes de Contribuição para informações detalhadas sobre:
- Configurar o seu ambiente de desenvolvimento
- Estilo de código e padrões
- Requisitos de testes
- Processo de pull request
- Código de conduta
Este projeto está licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.
- FastAPI - Framework web moderno e rápido
- SQLModel - Bases de dados SQL em Python, desenhado para simplicidade
- Alembic - Ferramenta de migração de base de dados
- Celery - Fila de tarefas distribuída
- Redis - Armazenamento de estrutura de dados em memória
- PostgreSQL - Base de dados avançada de código aberto
- Docker - Plataforma de containerização
- uv - Gestor de pacotes Python rápido
Se achou este projeto útil, por favor considere:
- Dar uma estrela ⭐️ no GitHub
- Partilhar com os seus colegas
- Contribuir para o seu desenvolvimento
- Reportar problemas ou sugerir melhorias
Bom código! 🚀