FastAPI-fastkit: All-in-one-Projekt-Scaffolding-Tool für Python- & FastAPI-Einsteiger
(github.com/bnbong)Hallo, in letzter Zeit ist der Bereich der AI-Entwicklung nicht nur heiß, sondern regelrecht explodiert, und dadurch gibt es auch sehr viel Zulauf für FastAPI, das Python-Backend-Framework.
Als Entwickler, der FastAPI seit Langem nutzt und schätzt, habe ich dieses Projekt mit dem Wunsch entwickelt, Entwicklerinnen und Entwicklern beim Einstieg in FastAPI zu helfen.
FastAPI-fastkit ist ein CLI-basiertes Starter-Kit, das für Nutzer entwickelt wurde, die Python und FastAPI zum ersten Mal verwenden, um die Entwicklungsumgebung einzurichten und das Projekt-Scaffolding zu beschleunigen.
Mit sehr einfachen Befehlen lässt sich ein FastAPI-Projekt erstellen, und auch das Anlegen einer virtuellen Umgebung sowie die Installation von Abhängigkeiten werden automatisch erledigt.
pip install fastapi-fastkit
fastkit init --interactive # Projekt interaktiv konfigurieren (DB ORM, Authentifizierung, Testing, Utilities sowie weitere vom Nutzer gewünschte Abhängigkeiten installieren)
FastAPI ist zwar als modernes und schnelles Python-Web-Framework beliebt, aber für Menschen, die mit FastAPI als erstem Web-Framework starten, gibt es nach wie vor Einstiegshürden:
- Es gibt keine standardisierte Projektstruktur, daher ist oft unklar, wie man die Struktur eines Projekts aufsetzen soll
- Als Folge von Punkt 1 unterscheidet sich die Struktur selbst bei FastAPI-basierten Projekten von Projekt zu Projekt, was beim Verständnis eines Projekts oder bei Open-Source-Beiträgen zusätzlichen Lernaufwand verursacht
- Im Vergleich zu anderen Web-Frameworks ist die Abhängigkeit von externen Bibliotheken für zentrale Web-Framework-Funktionen wie ASGI-Server oder Serialisierung sehr hoch, was das Lernen und die Nutzung von FastAPI komplizierter macht (weil man sich auch stärker mit anderen Bibliotheken und Tools beschäftigen muss)
Wer schon einmal Django verwendet hat, weiß, wie praktisch django-admin startproject ist. Im Spring-Ökosystem gibt es mit Spring Initializr ein ähnliches Tool, das ein Projekt direkt im Arbeitsverzeichnis anlegen kann.
Ich persönlich halte FastAPI auch in Bezug auf die Performance für ein sehr attraktives Framework und nutze es seit über fünf Jahren gerne. Wegen der oben genannten Nachteile zögern jedoch manche Menschen beim Einstieg, und ich dachte mir, dass FastAPI ebenfalls ein solches Tool gut gebrauchen könnte — so entstand FastAPI-fastkit.
Der entscheidende Auslöser für die Entwicklung des Projekts war, als mit FastAPI Version 0.111.0 das FastAPI-CLI-Paket hinzugefügt wurde. Dieses Paket wurde zwar vom FastAPI-Entwickler tiangolo eigenmächtig und ohne vorherige Validierung der Community-Reaktion ergänzt, aber ich konnte mich mit der in den Update-Notizen genannten Motivation, die Einstiegshürde in FastAPI zu senken, identifizieren und war überzeugt, dass mein Projekt dadurch noch bedeutungsvoller werden könnte.
[Kernfunktionen]
- Interaktiver Projekt-Builder (
fastkit init --interactive)
Wenn man schrittweise die gewünschten Abhängigkeiten und Funktionen auswählt, wird der Code automatisch erzeugt:
- Database: PostgreSQL, MySQL, MongoDB, Redis, SQLite
- Authentication: JWT, OAuth2, FastAPI-Users, Session-basiert
- Background: Celery, Dramatiq
- Caching: Redis, fastapi-cache2
- Monitoring: Loguru, OpenTelemetry, Prometheus
- Testing: automatische Einrichtung von pytest + coverage
- Utilities: CORS, Rate-Limiting, Pagination, WebSocket
- Deployment: automatische Erstellung von Docker und docker-compose
- Package Manager: pip, uv, pdm, poetry auswählbar
- Zusätzlich können weitere vom Nutzer gewünschte Abhängigkeiten eingegeben und hinzugefügt werden
- FastAPI-Projekt-Quellcode per Boilerplate schnell bereitstellen
Wenn die interaktive Konfiguration zu umständlich ist, kann man direkt mit vorkonfigurierten Templates starten:
fastkit list-templates # Liste der verfügbaren Templates anzeigen
fastkit startdemo fastapi-psql-orm --project-name myapp # Projekt mit einem bestimmten Template erstellen
Die im Paket bereitgestellten Templates wurden unter Berücksichtigung verschiedener FastAPI-Anwendungsfälle ergänzt, wobei ich mich an den Strukturen öffentlich auf GitHub registrierter FastAPI-basierter Projekte orientiert habe.
Neue Templates werden derzeit hinzugefügt; aktuell stehen folgende Templates zur Verfügung:
- fastapi-default: grundlegende FastAPI-Projektstruktur
- fastapi-async-crud: spezialisiert auf asynchrone CRUD-Operationen
- fastapi-dockerized: bereit für Docker-Deployment
- fastapi-psql-orm: Integration von PostgreSQL + SQLAlchemy ORM
- fastapi-single-module: einfache Einzelmodul-Struktur
- fastapi-mcp: grundlegende FastAPI-Projektstruktur für die Entwicklung von MCP-Servern
- Mit einem leeren Projekt starten
Wenn Sie ohne besondere Konfiguration mit einem sauberen leeren Projekt beginnen möchten: fastkit init --project-name myproject
- Route hinzufügen
Fügt einem bestehenden Projekt eine neue API-Route hinzu: fastkit addroute myproject users # Fügt dem Projekt myproject eine API-Route namens users hinzu
- Entwicklungsserver starten
Startet den Server direkt ohne separaten uvicorn-Befehl: fastkit runserver --reload --port 8000
[Dokumentation und Ressourcen]
Weitere Details zur Verwendung finden Sie in der offiziellen Dokumentation:
- Benutzerhandbuch: https://bnbong.github.io/FastAPI-fastkit/user-guide/quick-start/
- Tutorial: https://bnbong.github.io/FastAPI-fastkit/tutorial/getting-started/
- CLI-Referenz: https://bnbong.github.io/FastAPI-fastkit/user-guide/cli-reference/
- GitHub Repository: https://github.com/bnbong/FastAPI-fastkit
- PyPI-Paket: https://pypi.org/project/fastapi-fastkit
Ich hoffe, dass dies Menschen, die gerade erst mit FastAPI und Python anfangen, auch nur ein wenig helfen kann.
Feedback, Fragen und Beiträge sind jederzeit willkommen!
1 Kommentare
Ich habe für ein neues Projekt FastAPI geprüft.
Alle Punkte, die ich einzeln durchdacht und geprüft habe, sind darin enthalten.
Hervorragend. Vielen Dank.