FastAPI-fastkit: herramienta todo en uno de scaffolding de proyectos para principiantes en Python y FastAPI
(github.com/bnbong)Hola, últimamente el área de desarrollo con IA está tan encendida que parece una papa de lava, y como consecuencia FastAPI, el framework backend de Python, también ha recibido muchísimos nuevos usuarios.
Como desarrollador que ha usado y amado FastAPI durante mucho tiempo, quise ayudar a quienes están dando sus primeros pasos con FastAPI, y por eso desarrollé este proyecto.
FastAPI-fastkit es un starter kit basado en CLI que acelera la configuración del entorno de desarrollo y el scaffolding de proyectos para usuarios que recién conocen Python y FastAPI.
Con unos comandos muy simples, crea un proyecto FastAPI y completa automáticamente la creación del entorno virtual y la instalación de dependencias.
pip install fastapi-fastkit
fastkit init --interactive # Configurar el proyecto de forma interactiva (DB ORM, autenticación, testing, utilidades e instalación de otras dependencias que quiera el usuario)
FastAPI es querido como un framework web moderno y rápido de Python, pero para quienes lo eligen como su primer framework web todavía existen barreras de entrada:
- Como no ofrece una estructura de proyecto estandarizada, puede ser difícil decidir cómo organizar el proyecto
- Como extensión del punto anterior, aun siendo proyectos basados en FastAPI, cada uno puede tener una estructura distinta, lo que aumenta el costo de aprendizaje al entender proyectos o contribuir a código abierto
- En comparación con otros frameworks web, depende mucho de librerías externas para funciones clave del framework, como el servidor ASGI y la serialización, lo que hace más compleja la experiencia de aprendizaje y uso de FastAPI (porque también hay que prestar más atención al aprendizaje de otras librerías y herramientas)
Quienes han usado Django saben lo práctico que es django-admin startproject. En el ecosistema de Spring también existe una herramienta similar, Spring Initializr, que permite colocar de inmediato un proyecto en el directorio de trabajo.
En lo personal, siempre he considerado que FastAPI es un framework muy atractivo también en términos de rendimiento, y lo he usado con gusto durante más de 5 años. Pero por las desventajas mencionadas arriba, vi que algunas personas dudaban en empezar con él, así que pensé que sería bueno contar con una herramienta así también para FastAPI y por eso creé FastAPI-fastkit.
El detonante definitivo para decidir desarrollar este proyecto fue cuando se agregó el paquete FastAPI CLI en la versión 0.111.0 de FastAPI. Ese paquete fue añadido de forma unilateral por el desarrollador de FastAPI, tiangolo, sin validar la reacción de la comunidad, pero me identifiqué con la motivación expresada en las notas de esa actualización de reducir la barrera de entrada a FastAPI, y eso me convenció de que mi proyecto podía ser todavía más significativo.
[Funciones principales]
- Constructor interactivo de proyectos (
fastkit init --interactive)
Si eliges paso a paso las dependencias y funciones que quieres, el código se genera automáticamente:
- Base de datos: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Autenticación: JWT, OAuth2, FastAPI-Users, basada en sesiones
- Background: Celery, Dramatiq
- Caché: Redis, fastapi-cache2
- Monitoreo: Loguru, OpenTelemetry, Prometheus
- Testing: configuración automática de pytest + coverage
- Utilidades: CORS, Rate-Limiting, Pagination, WebSocket
- Despliegue: generación automática de Docker y docker-compose
- Gestor de paquetes: se puede elegir entre pip, uv, pdm, poetry
- Además, si el usuario ingresa dependencias adicionales que quiera agregar, también se pueden incluir
- Despliegue rápido del código fuente de un proyecto FastAPI con boilerplate
Si la configuración interactiva te resulta incómoda, puedes comenzar de inmediato con una plantilla preconfigurada:
fastkit list-templates # Ver la lista de plantillas disponibles
fastkit startdemo fastapi-psql-orm --project-name myapp # Crear un proyecto con una plantilla específica
Las plantillas incluidas en el paquete se agregaron considerando distintos casos de uso de FastAPI y tomando como referencia la estructura de proyectos públicos basados en FastAPI registrados en GitHub.
Se están agregando nuevas plantillas, y actualmente las disponibles son las siguientes:
- fastapi-default: estructura básica de proyecto FastAPI
- fastapi-async-crud: especializada en operaciones CRUD asíncronas
- fastapi-dockerized: lista para despliegue con Docker
- fastapi-psql-orm: integración con PostgreSQL + SQLAlchemy ORM
- fastapi-single-module: estructura simple de módulo único
- fastapi-mcp: estructura básica de proyecto FastAPI para desarrollar servidores MCP
- Empezar con un proyecto vacío
Si quieres comenzar con un proyecto vacío y limpio sin configuraciones especiales: fastkit init --project-name myproject
- Agregar rutas
Agrega nuevas rutas de API a un proyecto existente: fastkit addroute myproject users # Agrega una API route llamada users al proyecto myproject
- Ejecutar el servidor de desarrollo
Inicia el servidor directamente sin necesidad de un comando uvicorn aparte: fastkit runserver --reload --port 8000
[Documentación y recursos]
Para ver instrucciones de uso más detalladas, consulta la documentación oficial:
- Guía de usuario: https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- Tutorial: https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- Referencia de CLI: https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- Repositorio en GitHub: https://github.com/bnbong/FastAPI-fastkit
- Paquete en PyPI: https://pypi.org/project/fastapi-fastkit
Espero que pueda ser de ayuda, aunque sea un poco, para quienes están empezando con FastAPI y Python.
¡Toda retroalimentación, pregunta o contribución es bienvenida!
1 comentarios
Estuve revisando fastapi para un proyecto nuevo.
Incluye todos los puntos que estaba evaluando y considerando uno por uno.
Excelente. Muchas gracias.