Generador de Proyectos FastAPI
Genera un proyecto FastAPI limpio y verificado. Entrevista brevemente al usuario, recomienda valores predeterminados sensatos, genera el andamiaje y luego verifica con comandos reales.
Paso 1 - Entrevista
Usa la herramienta de preguntas estructuradas de tu agente si tiene alguna (cualquier herramienta de preguntar al usuario o de opción múltiple). Si no, haz las mismas preguntas en el chat como una lista numerada corta con opciones con letras y la opción recomendada marcada, luego espera la respuesta.
Pregunta en como máximo dos rondas. Omite cualquier pregunta que el usuario ya haya respondido en su mensaje. Siempre marca la opción recomendada primero con "(Recomendado)". Nunca preguntes sobre cosas que tengan un valor predeterminado seguro.
Ronda 1 - esenciales (un lote, hasta 4 preguntas):
- Nombre del proyecto - texto libre (usa "Otro"). Ofrece una sugerencia breve basada en el nombre del directorio. Normaliza a kebab-case para la carpeta y snake_case para los nombres de Python.
- Carpeta de destino - opciones: directorio actual
./<nombre>(Recomendado), una ruta personalizada (Otro). - Arquitectura - Capas modular (Recomendado), Minimalista, Arquitectura Limpia, Hexagonal. Microservicios solo aparece mediante "Otro"; si se elige, pregunta por qué y advierte contra ella para aplicaciones pequeñas (ver
references/architectures.md). - Servicios (multiselección) - PostgreSQL + SQLAlchemy + Alembic, autenticación JWT, Redis, Docker Compose. Recomienda PostgreSQL y Docker Compose.
Ronda 2 - extras opcionales (solo pregunta si es relevante; un lote):
- Base de datos vectorial (multiselección, solo si el usuario quiere IA/RAG o Qdrant): Qdrant, PostgreSQL pgvector, Ninguno.
- Módulos de IA (multiselección): Ninguno (Recomendado), LangChain, LangGraph, RAG, MCP.
- Proveedor de LLM (solo si se selecciona un módulo de IA): OpenAI, Anthropic, Google Gemini, Ollama (local).
- ¿Persistir el estado de la conversación? (solo si se selecciona LangGraph): Sí, mediante punto de control de Postgres / No (en memoria).
Luego imprime un resumen de 6 líneas de las elecciones y continúa; no pidas otra confirmación a menos que la carpeta de destino no esté vacía.
Paso 2 - Comprobaciones de seguridad
- Resuelve la ruta de destino. Si existe y no está vacía, DETENTE y pregunta si usar una carpeta diferente o fusionar. Nunca sobrescribas archivos existentes sin aprobación explícita.
- Confirma que
uvestá instalado (uv --version). Si no, dile al usuario cómo instalarlo (curl -LsSf https://astral.sh/uv/install.sh | sh) y detente. - Confirma que Docker está disponible solo si se seleccionó Docker Compose, y solo para el paso de verificación.
Paso 3 - Andamiaje
Lee los archivos de referencia correspondientes antes de generar código:
- Siempre:
references/base-project.md(diseño, archivos iniciales, reglas de uv, estándares de código) - Arquitectura elegida:
references/architectures.md - Servicios elegidos:
references/services.md(dependencias, estándares de Docker) - Cualquier módulo de IA:
references/ai-rag.md
Reglas que siempre aplican:
- Python 3.12, solo uv (nunca pip).
backend/pyproject.tomlybackend/uv.lockpermanecen juntos. [tool.uv] package = falsea menos que el usuario quiera explícitamente un paquete instalable.- Sin directorio
src/. Sin capas de abstracción vacías. - Agrega dependencias solo para los servicios seleccionados, mediante
uv add/uv add --dev. - Archivos requeridos:
app/main.py,app/core/config.py,app/api/routes/health.py,tests/test_health.py,.env.example,.gitignore,README.md. /healthdevuelve HTTP 200{"status": "ok"}; Swagger en/docs.- Nunca pongas secretos en el código fuente; nunca subas
.env. - Las carpetas, endpoints y dependencias de IA existen solo si se solicitaron.
Paso 4 - Verificar (nunca afirmes éxito sin ejecutar)
Desde backend/:
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest -v
Si se seleccionó Docker Compose: docker compose config (desde la raíz del proyecto). Ejecuta docker compose up -d solo si el usuario lo pide, o pregunta una vez. Corrige fallos y vuelve a ejecutar. Si algo no se puede verificar, dilo.
Paso 5 - Informe de entrega
Informa de manera concisa:
- Ubicación del proyecto
- Arquitectura seleccionada
- Servicios incluidos
- Dependencias instaladas
- Archivos creados (árbol)
- Comando para ejecutar la API:
cd backend && uv run uvicorn app.main:app --reload - Comando para ejecutar pruebas:
cd backend && uv run pytest -v - Resultados reales de pruebas y linting
- Limitaciones conocidas
Finaliza ofreciendo un siguiente paso (por ejemplo, "añadir un primer módulo de dominio", "git init y push").