🇺🇸 English | 🇧🇷 Português | 🇫🇷 Français
Una plantilla backend FastAPI moderna y lista para producción con mejores prácticas, soporte Docker y herramientas integrales para desarrollo rápido.
Este proyecto fue creado usando la excelente plantilla cookiecutter-fastapi-backend por @nickatnight, que proporciona una base sólida para aplicaciones FastAPI con mejores prácticas y herramientas modernas.
- Arquitectura - Resumen de la arquitectura del sistema
- Guía de Desarrollo - Directrices de desarrollo local
- Guía de Contribución - Cómo contribuir a este proyecto
- Solución de Problemas - Problemas comunes y soluciones
- FastAPI - Framework web moderno y rápido para construir APIs
- Docker - Desarrollo y despliegue containerizado
- PostgreSQL - Base de datos relacional robusta con soporte asíncrono
- Redis - Caché y gestión de sesiones
- Celery - Procesamiento de tareas en segundo plano
- Alembic - Gestión de migraciones de base de datos
- Pruebas - Suite de pruebas completa con pytest
- Calidad de Código - Hooks pre-commit, linting y formateo
- Seguridad de Tipos - Anotaciones de tipo completas con validación mypy
- Documentación - Documentación API auto-generada con Swagger UI
- Docker y Docker Compose
- Python 3.13+ (para desarrollo local)
- Gestor de paquetes uv
-
Clonar el repositorio:
git clone https://github.com/GabrielVGS/fastapi-base.git cd fastapi-base -
Copiar variables de entorno:
cp .env.example .env
-
Iniciar los servicios:
make up
-
Acceder a la aplicación:
- API:
http://localhost:8666/v1/ - Verificación de salud:
http://localhost:8666/v1/ping - Documentación interactiva:
http://localhost:8666/docs - Documentación alternativa:
http://localhost:8666/redoc
- API:
-
Instalar uv (si no está ya instalado):
curl -LsSf https://astral.sh/uv/install.sh | sh -
Navegar al directorio del proyecto:
cd fastapi-base/ -
Instalar dependencias:
uv sync
-
Instalar hooks pre-commit:
make hooks
Inicializar la primera migración (el proyecto debe estar ejecutándose con docker compose up y no contener archivos 'version'):
make alembic-initCrear nuevo archivo de migración:
make alembic-make-migrations "describe sus cambios"Aplicar migraciones:
make alembic-migrateDespués de cada migración, puede crear nuevas migraciones y aplicarlas con:
make alembic-make-migrations "describe sus cambios"
make alembic-migrateCree un archivo .env basado en .env.example:
PROJECT_NAME- Nombre del proyecto (por defecto: fastapi-base)VERSION- Versión de la API (por defecto: v1)DEBUG- Habilitar modo debug (por defecto: True)SECRET_KEY- Clave secreta para JWT y encriptaciónENV- Entorno (dev/staging/production)
POSTGRES_USER- Nombre de usuario PostgreSQLPOSTGRES_PASSWORD- Contraseña PostgreSQLPOSTGRES_DB- Nombre de la base de datosPOSTGRES_HOST- Host de la base de datos (por defecto: localhost)POSTGRES_PORT- Puerto de la base de datos (por defecto: 5432)POSTGRES_URL- URL completa de la base de datos (opcional, auto-generada si no se proporciona)
REDIS_HOST- Host Redis (por defecto: redis)REDIS_PORT- Puerto Redis (por defecto: 6379)REDIS_URL- URL completa Redis (opcional, auto-generada si no se proporciona)
SENTRY_DSN- DSN de seguimiento de errores SentryLOG_LEVEL- Nivel de logging (por defecto: INFO)CACHE_TTL- Tiempo de vida del caché en segundos (por defecto: 60)
# Construir e iniciar todos los servicios
make build
# Iniciar servicios (sin construcción)
make up
# Detener servicios
make down
# Acceder al bash del contenedor
make bash# Asegurar que PostgreSQL y Redis estén ejecutándose localmente
# Actualizar .env con conexiones locales de base de datos/redis
# Ejecutar la aplicación FastAPI
uv run uvicorn src.main:app --reload --host 0.0.0.0 --port 8000Consulte el Makefile para ver todos los comandos disponibles.
# Desarrollo
make up # Iniciar todos los servicios con Docker Compose
make down # Detener todos los servicios
make build # Construir e iniciar servicios
make bash # Acceder al shell del contenedor principal
# Base de Datos
make alembic-init # Inicializar primera migración
make alembic-make-migrations # Crear nueva migración
make alembic-migrate # Aplicar migraciones
make alembic-reset # Reiniciar base de datos
make init-db # Inicializar base de datos con datos de ejemplo
# Calidad de Código
make test # Ejecutar suite de pruebas con cobertura
make lint # Ejecutar linter ruff
make black # Formatear código con black
make isort # Ordenar imports
make mypy # Verificación de tipos
make precommit-run # Ejecutar todos los hooks pre-commit
# Mantenimiento
make hooks # Instalar hooks pre-commitPor defecto, las dependencias se gestionan con uv. Por favor visite el enlace e instálelo.
Desde ./fastapi-base/ puede instalar todas las dependencias con:
uv syncEl proyecto usa hooks pre-commit para asegurar la calidad del código. Instálelos con:
make hooksEsto instalará hooks que se ejecutan automáticamente antes de cada commit para:
- Formatear código con
black - Ordenar imports con
isort - Analizar código con
ruff - Verificar tipos con
mypy - Ejecutar pruebas
Ejecutar la suite completa de pruebas:
make testEjecutar pruebas específicas:
# Dentro del contenedor
docker compose exec fastapi-base pytest tests/test_specific.py
# Localmente (si las dependencias están instaladas)
uv run pytest tests/test_specific.pyEl proyecto incluye configuraciones Docker listas para producción:
# Construir imagen de producción
docker build -f ops/production.Dockerfile -t fastapi-base:prod .
# Ejecutar contenedor de producción
docker run -p 8000:8000 --env-file .env fastapi-base:prod- Establecer
DEBUG=Falseen producción - Usar
SECRET_KEYapropiada - Configurar
SENTRY_DSNpara seguimiento de errores - Establecer credenciales apropiadas de base de datos
- Usar Redis para gestión de sesiones y caché
fastapi-base/
├── fastapi-base/ # Directorio principal de la aplicación
│ ├── src/ # Código fuente
│ │ ├── core/ # Configuración y ajustes principales
│ │ ├── models/ # Modelos de base de datos
│ │ ├── api/ # Rutas y endpoints API
│ │ ├── db/ # Utilidades de base de datos
│ │ ├── migrations/ # Migraciones de base de datos Alembic
│ │ └── main.py # Punto de entrada de la aplicación
│ ├── tests/ # Suite de pruebas
│ ├── pyproject.toml # Dependencias Python y configuración de herramientas
│ └── Dockerfile # Imagen Docker de desarrollo
├── ops/ # Operaciones y despliegue
│ └── production.Dockerfile # Imagen Docker de producción
├── docs/ # Documentación
├── docker-compose.yml # Configuración del entorno de desarrollo
├── Makefile # Comandos de desarrollo
└── .env.example # Plantilla de variables de entorno
¡Damos la bienvenida a las contribuciones! Por favor consulte nuestras Directrices de Contribución para información detallada sobre:
- Configurar su entorno de desarrollo
- Estilo de código y estándares
- Requisitos de pruebas
- Proceso de pull request
- Código de conducta
Este proyecto está licenciado bajo la Licencia MIT - vea el archivo LICENSE para detalles.
- FastAPI - Framework web moderno y rápido
- SQLModel - Bases de datos SQL en Python, diseñado para simplicidad
- Alembic - Herramienta de migración de base de datos
- Celery - Cola de tareas distribuida
- Redis - Almacén de estructura de datos en memoria
- PostgreSQL - Base de datos avanzada de código abierto
- Docker - Plataforma de containerización
- uv - Gestor de paquetes Python rápido
Si encontró útil este proyecto, por favor considere:
- Darle una estrella ⭐️ en GitHub
- Compartirlo con sus colegas
- Contribuir a su desarrollo
- Reportar problemas o sugerir mejoras
¡Feliz codificación! 🚀