FastAPI-fastkit : un outil de scaffolding de projet tout-en-un pour les débutants en Python et FastAPI
(github.com/bnbong)Bonjour, ces derniers temps, le domaine du développement IA est si brûlant qu’il est devenu un véritable sujet en ébullition, et le framework backend Python FastAPI attire lui aussi énormément de nouveaux venus.
En tant que développeur qui utilise et apprécie FastAPI depuis longtemps, j’ai créé ce projet avec l’envie d’aider celles et ceux qui débutent avec FastAPI.
FastAPI-fastkit est un starter kit en CLI conçu pour les personnes qui découvrent Python et FastAPI, afin d’accélérer la configuration de l’environnement de développement et le scaffolding de projet.
Avec une saisie de commandes très simple, il permet de créer un projet FastAPI, de générer un environnement virtuel et d’installer toutes les dépendances automatiquement.
pip install fastapi-fastkit
fastkit init --interactive # configuration interactive du projet (DB ORM, authentification, tests, utilitaires et installation d’autres dépendances souhaitées par l’utilisateur)
FastAPI est apprécié comme framework web Python moderne et rapide, mais pour les personnes qui choisissent FastAPI comme tout premier framework web, il existe encore des barrières à l’entrée :
- Comme aucune structure de projet standardisée n’est fournie, il est difficile de savoir comment organiser son projet
- Dans le prolongement du point 1, même entre projets basés sur FastAPI, la structure varie d’un projet à l’autre, ce qui engendre un coût d’apprentissage pour comprendre un projet ou contribuer à l’open source
- Par rapport à d’autres frameworks web, FastAPI dépend énormément de bibliothèques externes pour des fonctions centrales du framework web comme les serveurs ASGI ou la sérialisation, ce qui rend l’apprentissage et l’expérience d’utilisation plus difficiles (car il faut aussi consacrer davantage d’attention à l’apprentissage d’autres bibliothèques et outils)
Les personnes qui ont déjà utilisé Django savent à quel point django-admin startproject est pratique. L’écosystème Spring dispose lui aussi d’un outil similaire, Spring Initializr, qui permet de placer immédiatement un projet dans le répertoire de travail.
Personnellement, je considère FastAPI comme un framework très séduisant aussi sur le plan des performances, et je l’utilise volontiers depuis plus de 5 ans. Mais comme certaines personnes hésitaient à s’y mettre à cause des inconvénients mentionnés plus haut, je me suis dit qu’un tel outil serait utile aussi pour FastAPI, et c’est ainsi qu’est né FastAPI-fastkit.
L’élément déclencheur décisif qui m’a poussé à lancer le projet a été l’ajout du package FastAPI CLI dans la version 0.111.0 de FastAPI. Ce package a été ajouté de manière unilatérale par le développeur de FastAPI, tiangolo, sans validation préalable de la réaction de la communauté. Toutefois, j’ai partagé la motivation exprimée dans cette note de mise à jour, à savoir réduire la barrière à l’entrée de FastAPI, et cela m’a convaincu que mon projet pouvait avoir encore plus de sens.
[Fonctionnalités principales]
- Constructeur de projet interactif (
fastkit init --interactive)
En sélectionnant étape par étape les dépendances et fonctionnalités souhaitées, le code est généré automatiquement :
- Base de données : PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentification : JWT, OAuth2, FastAPI-Users, basée sur les sessions
- Tâches de fond : Celery, Dramatiq
- Cache : Redis, fastapi-cache2
- Monitoring : Loguru, OpenTelemetry, Prometheus
- Tests : configuration automatique de pytest + coverage
- Utilitaires : CORS, limitation de débit, pagination, WebSocket
- Déploiement : génération automatique de Docker et docker-compose
- Gestionnaire de paquets : choix entre pip, uv, pdm, poetry
- Il est aussi possible d’ajouter d’autres dépendances saisies par l’utilisateur
- Déployer rapidement le code source d’un projet FastAPI à partir d’un boilerplate
Si la configuration interactive est fastidieuse, il est possible de démarrer directement avec des templates préconfigurés :
fastkit list-templates # vérifier la liste des templates disponibles
fastkit startdemo fastapi-psql-orm --project-name myapp # créer un projet à partir d’un template spécifique
Les templates fournis dans le package ont été ajoutés en tenant compte de différents cas d’usage de FastAPI, en s’inspirant de la structure de projets publics basés sur FastAPI disponibles sur GitHub.
De nouveaux templates sont en cours d’ajout, et les templates actuellement proposés sont les suivants :
- fastapi-default : structure de projet FastAPI de base
- fastapi-async-crud : spécialisé pour les opérations CRUD asynchrones
- fastapi-dockerized : prêt pour un déploiement Docker
- fastapi-psql-orm : intégration PostgreSQL + ORM SQLAlchemy
- fastapi-single-module : structure simple à module unique
- fastapi-mcp : structure de projet FastAPI de base pour le développement de serveurs MCP
- Démarrer avec un projet vide
Si vous voulez commencer avec un projet vide et propre, sans configuration particulière : fastkit init --project-name myproject
- Ajouter des routes
Ajoute de nouvelles routes d’API à un projet existant : fastkit addroute myproject users # ajoute une route d’API appelée users au projet myproject
- Lancer le serveur de développement
Lance directement le serveur sans commande uvicorn séparée : fastkit runserver --reload --port 8000
[Documentation et ressources]
Pour des explications plus détaillées sur l’utilisation, veuillez consulter la documentation officielle :
- Guide utilisateur : https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- Tutoriel : https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- Référence CLI : https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- Dépôt GitHub : https://github.com/bnbong/FastAPI-fastkit
- Package PyPI : https://pypi.org/project/fastapi-fastkit
J’espère que cela pourra être utile, même un peu, à celles et ceux qui débutent avec FastAPI et Python.
Tous les retours, questions et contributions sont les bienvenus !
1 commentaires
J’examinais FastAPI pour un nouveau projet.
Tous les points que j’étais en train d’étudier un par un y sont inclus.
C’est excellent. Merci.