Gerador de Projetos FastAPI
Gere um projeto FastAPI limpo e verificado. Entreviste o usuário rapidamente, recomende opções padrão sensatas, gere a estrutura e verifique com comandos reais.
Etapa 1 - Entrevista
Use a ferramenta de perguntas estruturadas do seu agente, se houver (qualquer ferramenta de perguntar ao usuário ou de múltipla escolha). Caso contrário, faça as mesmas perguntas no chat como uma lista numerada curta com opções em letras e a opção recomendada marcada, e aguarde a resposta.
Pergunte em no máximo duas rodadas. Pule qualquer pergunta que o usuário já respondeu na mensagem. Sempre marque a opção recomendada primeiro com "(Recomendado)". Nunca pergunte sobre coisas que têm um valor padrão seguro.
Rodada 1 - essenciais (um lote, até 4 perguntas):
- Nome do projeto - texto livre (use "Outro"). Ofereça uma sugestão curta baseada no nome do diretório. Normalize para kebab-case para a pasta e snake_case para os nomes Python.
- Pasta de destino - opções: diretório atual
./<nome>(Recomendado), um caminho personalizado (Outro). - Arquitetura - Modular em camadas (Recomendado), Minimalista, Arquitetura Limpa, Hexagonal. Microsserviços só aparece via "Outro"; se escolhido, pergunte o motivo e avise contra para apps pequenos (veja
references/architectures.md). - Serviços (multisseleção) - PostgreSQL + SQLAlchemy + Alembic, autenticação JWT, Redis, Docker Compose. Recomende PostgreSQL e Docker Compose.
Rodada 2 - extras opcionais (pergunte apenas se relevante; um lote):
- Banco vetorial (multisseleção, apenas se o usuário quiser IA/RAG ou Qdrant): Qdrant, PostgreSQL pgvector, Nenhum.
- Módulos de IA (multisseleção): Nenhum (Recomendado), LangChain, LangGraph, RAG, MCP.
- Provedor de LLM (apenas se um módulo de IA for selecionado): OpenAI, Anthropic, Google Gemini, Ollama (local).
- Persistir estado da conversa? (apenas se LangGraph for selecionado): Sim via checkpointer Postgres / Não (em memória).
Em seguida, imprima um resumo de 6 linhas com as escolhas e prossiga - não peça outra confirmação a menos que a pasta de destino não esteja vazia.
Etapa 2 - Verificações de segurança
- Resolva o caminho de destino. Se ele existir e não estiver vazio, PARE e pergunte se deseja usar uma pasta diferente ou mesclar. Nunca sobrescreva arquivos existentes sem aprovação explícita.
- Confirme se o
uvestá instalado (uv --version). Caso contrário, diga ao usuário como instalá-lo (curl -LsSf https://astral.sh/uv/install.sh | sh) e pare. - Confirme se o Docker está disponível apenas se o Docker Compose foi selecionado, e apenas para a etapa de verificação.
Etapa 3 - Gerar estrutura
Leia os arquivos de referência correspondentes antes de gerar o código:
- Sempre:
references/base-project.md(layout, arquivos iniciais, regras do uv, padrões de código) - Arquitetura escolhida:
references/architectures.md - Serviços escolhidos:
references/services.md(dependências, padrões Docker) - Qualquer módulo de IA:
references/ai-rag.md
Regras que sempre se aplicam:
- Python 3.12, apenas uv (nunca pip).
backend/pyproject.tomlebackend/uv.lockficam juntos. [tool.uv] package = falsea menos que o usuário explicitamente queira um pacote instalável.- Sem diretório
src/. Sem camadas de abstração vazias. - Adicione dependências apenas para os serviços selecionados, via
uv add/uv add --dev. - Arquivos obrigatórios:
app/main.py,app/core/config.py,app/api/routes/health.py,tests/test_health.py,.env.example,.gitignore,README.md. /healthretorna HTTP 200{"status": "ok"}; Swagger em/docs.- Nunca coloque segredos no código-fonte; nunca commite
.env. - Pastas, endpoints e dependências de IA existem apenas se solicitados.
Etapa 4 - Verificar (nunca afirme sucesso sem executar)
A partir de backend/:
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v
Se o Docker Compose foi selecionado: docker compose config (da raiz do projeto). Execute docker compose up -d apenas se o usuário pedir, ou pergunte uma vez. Corrija falhas e reexecute. Se algo não puder ser verificado, diga.
Etapa 5 - Relatório de entrega
Relate de forma concisa:
- Localização do projeto
- Arquitetura selecionada
- Serviços incluídos
- Dependências instaladas
- Arquivos criados (árvore)
- Comando para executar a API:
cd backend && uv run uvicorn app.main:app --reload - Comando para executar os testes:
cd backend && uv run pytest -v - Resultados reais dos testes e lint
- Limitações conhecidas
Finalize oferecendo um próximo passo (ex.: "adicione um primeiro módulo de domínio", "git init e push").