Crear proyectos
Guía detallada para crear distintos tipos de proyectos FastAPI con FastAPI-fastkit.
Creación básica de proyectos
1. Crear un proyecto en modo interactivo
La forma más básica de crear un proyecto de manera interactiva:
$ fastkit init
Enter the project name: my-awesome-api
Enter the author name: John Doe
Enter the author email: john@example.com
Enter the project description: Awesome FastAPI project
Project Information
┌──────────────┬─────────────────────────┐
│ Project Name │ my-awesome-api │
│ Author │ John Doe │
│ Author Email │ john@example.com │
│ Description │ Awesome FastAPI project │
└──────────────┴─────────────────────────┘
2. Selección del stack
Elige el stack de dependencias que quieres incluir en tu proyecto:
Stack MINIMAL (por defecto)
El proyecto FastAPI más básico:
fastapi- Framework FastAPIuvicorn- Servidor ASGIpydantic- Validación de datospydantic-settings- Gestión de configuración
Ideal para:
- Aprender FastAPI
- APIs simples
- Prototipos
- Microservicios
Stack STANDARD
Incluye soporte para base de datos y pruebas:
- Todas las dependencias de MINIMAL
sqlalchemy- ORM para operaciones de base de datosalembic- Migraciones de base de datospytest- Framework de pruebas
Ideal para:
- La mayoría de aplicaciones web
- APIs con almacenamiento en base de datos
- Aplicaciones listas para producción
- Proyectos en equipo
Stack FULL
Entorno de desarrollo completo:
- Todas las dependencias de STANDARD
redis- Caché y almacenamiento de sesionescelery- Procesamiento de tareas en segundo plano
Ideal para:
- Aplicaciones grandes
- Requisitos de alto rendimiento
- Lógica de negocio compleja
- Aplicaciones empresariales
Opciones avanzadas del proyecto
Configuración personalizada del proyecto
Puedes personalizar tu proyecto durante la creación:
$ fastkit init
Enter the project name: advanced-api
Enter the author name: Development Team
Enter the author email: dev@company.com
Enter the project description: Advanced FastAPI application with custom features
# Elige el stack STANDARD para soporte de base de datos
Select stack (minimal, standard, full): standard
Do you want to proceed with project creation? [y/N]: y
Explicación de la estructura del proyecto
Cuando creas un proyecto, FastAPI-fastkit genera esta estructura:
my-awesome-api/
├── .venv/ # Entorno virtual
├── src/ # Código fuente
│ ├── __init__.py
│ ├── main.py # Punto de entrada de la app
│ ├── core/ # Configuración central
│ │ ├── __init__.py
│ │ └── config.py # Ajustes y configuración
│ ├── api/ # Capa de API
│ │ ├── __init__.py
│ │ ├── api.py # Router principal de la API
│ │ └── routes/ # Módulos individuales de rutas
│ │ ├── __init__.py
│ │ └── items.py # Endpoints de ejemplo de items
│ ├── crud/ # Operaciones de base de datos
│ │ ├── __init__.py
│ │ └── items.py # Operaciones CRUD para items
│ ├── schemas/ # Modelos Pydantic
│ │ ├── __init__.py
│ │ └── items.py # Esquemas de validación de datos
│ └── mocks/ # Datos de prueba
│ ├── __init__.py
│ └── mock_items.json # Datos de ejemplo para desarrollo
├── tests/ # Suite de pruebas
│ ├── __init__.py
│ ├── conftest.py # Configuración de pruebas
│ └── test_items.py # Pruebas de ejemplo
├── scripts/ # Scripts de utilidades
│ ├── test.sh # Ejecutar pruebas
│ ├── coverage.sh # Cobertura de pruebas
│ └── lint.sh # Linting de código
├── requirements.txt # Dependencias Python
├── setup.py # Configuración del paquete
└── README.md # Documentación del proyecto
3. Selección del gestor de paquetes
FastAPI-fastkit soporta varios gestores de paquetes Python. Elige el que mejor encaje con tu flujo de desarrollo:
Gestores disponibles
Available Package Managers:
Package Managers
┌────────┬────────────────────────────────────────────┐
│ PIP │ Standard Python package manager │
│ UV │ Fast Python package manager │
│ PDM │ Modern Python dependency management │
│ POETRY │ Python dependency management and packaging │
└────────┴────────────────────────────────────────────┘
Select package manager (pip, uv, pdm, poetry) [uv]: uv
Cada gestor tiene sus ventajas:
UV (Por defecto — recomendado)
Gestor de paquetes rápido basado en Rust
- ⚡ Ultra rápido: 10-100x más rápido que pip
- 🔧 Sin complicaciones: Compatible con los flujos habituales de pip
- 📦 Moderno: Soporte completo de PEP 621
- 🛠️ Fiable: Resolución determinista
Archivos generados:
pyproject.toml(formato PEP 621)uv.lock(archivo de lock)
Uso tras la creación:
cd my-project
uv sync # Instalar dependencias
uv add requests # Añadir nueva dependencia
uv run pytest # Ejecutar pruebas
PDM
Gestión moderna de dependencias Python
- 🚀 Moderno: Soporte para PEP 582 y PEP 621
- 🧠 Inteligente: Resolución avanzada de dependencias
- 💼 Profesional: Workspaces y soporte multi-proyecto
- 📊 Analíticas: Herramientas de análisis de dependencias
Archivos generados:
pyproject.toml(formato PEP 621)pdm.lock(archivo de lock)
Uso tras la creación:
cd my-project
pdm install # Instalar dependencias
pdm add requests # Añadir nueva dependencia
pdm run pytest # Ejecutar pruebas
Poetry
Gestión de dependencias y empaquetado maduros
- ✅ Consolidado: Maduro y muy adoptado
- 📦 Integrado: Soporte de build y publicación
- 🔒 Reproducible: poetry.lock para versiones exactas
- 🏗️ Completo: Ciclo de vida del proyecto completo
Archivos generados:
pyproject.toml(formato Poetry)poetry.lock(archivo de lock)
Uso tras la creación:
cd my-project
poetry install # Instalar dependencias
poetry add requests # Añadir nueva dependencia
poetry run pytest # Ejecutar pruebas
PIP
Gestor estándar de paquetes Python
- 🏠 Incluido: Viene con Python
- 🌍 Universal: Funciona en todas partes
- 📚 Familiar: La mayoría de desarrolladores lo conoce
- 🔧 Simple: Flujo de trabajo directo
Archivos generados:
requirements.txt
Uso tras la creación:
cd my-project
source .venv/bin/activate # Linux/macOS
.venv\Scripts\activate # Windows
pip install -r requirements.txt
pip install requests
pytest
Especificar el gestor de paquetes
Puedes especificar tu gestor preferido:
Selección interactiva (por defecto):
Opción de línea de comandos:
$ fastkit init --package-manager poetry
$ fastkit init --package-manager pdm
$ fastkit init --package-manager uv
$ fastkit init --package-manager pip
Entender cada directorio
Directorio src/
Contiene todo el código fuente de tu aplicación siguiendo el patrón src layout, buena práctica de empaquetado en Python.
Módulo core/
- config.py: Ajustes de la app, variables de entorno y configuración
- Centraliza toda la gestión de configuración
- Soporta archivos
.envpara ajustes por entorno
Módulo api/
- api.py: Router principal que incluye todos los sub-routers
- routes/: Módulos individuales de rutas para distintos recursos
- Separación clara de responsabilidades para distintos endpoints
Módulo crud/
- Operaciones de base de datos y lógica de negocio
- Operaciones Create, Read, Update, Delete
- Capa de abstracción entre las rutas de la API y el almacenamiento
Módulo schemas/
- Modelos Pydantic para validación de datos
- Esquemas de petición / respuesta
- Definiciones de tipos y modelos de datos
Directorio tests/
- Suite completa de pruebas para tu aplicación
- Incluye pruebas unitarias y de integración
- Preconfigurado con pytest
Comparación de stacks
| Característica | MINIMAL | STANDARD | FULL |
|---|---|---|---|
| FastAPI y Uvicorn | ✅ | ✅ | ✅ |
| Validación de datos | ✅ | ✅ | ✅ |
| Soporte de base de datos | ❌ | ✅ | ✅ |
| Migraciones | ❌ | ✅ | ✅ |
| Framework de pruebas | ❌ | ✅ | ✅ |
| Caché (Redis) | ❌ | ❌ | ✅ |
| Tareas en segundo plano | ❌ | ❌ | ✅ |
| Ideal para | Aprendizaje, APIs simples | La mayoría de aplicaciones | Empresarial, apps complejas |
Ejemplos de creación de proyectos
Ejemplo 1: Proyecto de aprendizaje
Ejemplo 2: API de e-commerce
Ejemplo 3: Aplicación de alto rendimiento
$ fastkit init
Enter the project name: enterprise-api
Enter the author name: Enterprise Team
Enter the author email: enterprise@company.com
Enter the project description: High-performance enterprise API
Select stack (minimal, standard, full): full
Do you want to proceed with project creation? [y/N]: y
Después de crear el proyecto
1. Activar el entorno virtual
2. Verificar la instalación
3. Empezar a desarrollar
Gestión de configuración
Variables de entorno
Tu proyecto soporta configuración por entorno mediante archivos .env:
Crea un archivo .env en la raíz del proyecto:
# .env
APP_NAME=My Awesome API
APP_VERSION=1.0.0
DEBUG=True
DATABASE_URL=sqlite:///./app.db
SECRET_KEY=your-secret-key-here
Configuración desde el código
El archivo generado src/core/config.py carga estas variables automáticamente:
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
APP_NAME: str = "FastAPI Application"
APP_VERSION: str = "1.0.0"
DEBUG: bool = False
DATABASE_URL: str = "sqlite:///./app.db"
SECRET_KEY: str = "dev-secret-key"
class Config:
env_file = ".env"
settings = Settings()
Opciones de personalización
Añadir dependencias personalizadas
Tras crear el proyecto, puedes añadir más dependencias:
Modificar la estructura del proyecto
Aunque la estructura generada sigue buenas prácticas, puedes modificarla:
- Añade módulos nuevos en
src/ - Crea archivos de rutas adicionales en
api/routes/ - Amplía las operaciones CRUD en
crud/ - Añade más esquemas en
schemas/
Buenas prácticas
1. Entorno virtual
Usa siempre entornos virtuales para aislar las dependencias del proyecto:
# Crear proyecto con entorno virtual
$ fastkit init # Crea automáticamente .venv/
# Activarlo al trabajar
$ source .venv/bin/activate
2. Control de versiones
Inicializa el repositorio git tras crear el proyecto:
3. Configuración por entorno
- Usa archivos
.envpara desarrollo local - Usa variables de entorno para producción
- No comitees nunca datos sensibles al control de versiones
4. Pruebas
Aprovecha el framework de pruebas incluido:
Próximos pasos
Tras crear tu proyecto:
- Añadir rutas: Aprende a añadir nuevos endpoints de API
- Referencia de la CLI: Domina todos los comandos disponibles
- Tutorial de tu primer proyecto: Construye una aplicación completa
Consejos para crear proyectos
- Elige el stack que se ajusta a los requisitos de tu proyecto
- Empieza con MINIMAL para aprender, usa STANDARD para la mayoría de proyectos
- La estructura del proyecto está pensada para escalar y mantenerse
- Todo el código generado sigue las buenas prácticas de FastAPI