So erstellst du in wenigen Minuten ein funktionierendes FastAPI-Backend-Grundgerüst
Jedes Mal, wenn ich ein neues FastAPI-Projekt starte, stecke ich in einer Zeitschleife fest. Ich muss die Verzeichnisstruktur erneut einrichten, die Datenbank verbinden, Migrations schreiben, Umgebungsvariablen einhängen, das Dockerfile bauen und Linter konfigurieren. Es ist leicht, einen ganzen Abend mit dieser Routine zu verschwenden, bevor der erste echte Endpunkt überhaupt erscheint.
Natürlich kannst du die Struktur aus deinem vorherigen Repository kopieren. Aber sie enthält normalerweise eine Reihe alter Workarounds, unnötiger Abhängigkeiten und veralteter Bibliotheken. Fertige Boilertplates aus Suchergebnissen treffen auch selten den Nagel auf den Kopf, weil der Autor TortoiseORM gewählt hat, du aber SQLAlchemy 2.0 brauchst, oder sie haben schweres Celery statt leichtgewichtiger Queues reingepackt.
Das FastAPI-template-Repository des Entwicklers s3rius löst dieses Problem anders. Es ist keine statische Vorlage, sondern ein flexibler interaktiver Projektgenerator.
Konstruktor statt starrer Vorlage
Das Projekt funktioniert wie ein Terminal-Fragebogen. Du startest das Tool über pip, uv oder Docker, beantwortest ein paar Dutzend Fragen und erhältst einen fertigen Codebase, der auf deine Bedürfnisse zugeschnitten ist.
Der Hauptvorteil des Generators ist die Variabilität. Die meisten Vorlagen erzwingen einen bestimmten Stack, aber hier stellst du den benötigten Satz von Komponenten selbst zusammen.
Datenbanken und ORM nach Wahl
Statt an eine einzelne Bibliothek gebunden zu sein, unterstützt das Tool mehrere beliebte Datenverarbeitungsoptionen:
- SQLAlchemy 2.0 mit Async-Engine
- TortoiseORM mit Migrationsgenerierung über Aerich
- Piccolo ORM
- Ormar
- Beanie für MongoDB
- Raw psycopg-Treiber ohne ORM
Wenn du überhaupt keine Datenbank brauchst, kannst du die Option ohne Datenspeicherung wählen. In diesem Fall enthält der Code keine unnötigen Abhängigkeiten und keine Müll-Konfigurationsdateien.
REST oder GraphQL
Standardmäßig erstellt der Generator eine klassische REST-API mit automatischer Swagger-Dokumentation. Aber wenn dein Frontend lieber über GraphQL arbeitet, richtet der Generator den Wrapper auf Basis der Strawberry-Bibliothek ein. Du musst das Schema und die Typen nicht manuell konfigurieren, um loszulegen.
Hintergrundaufgaben und Queues
Statt klobigem Celery hat der Vorlagenautor die Integration mit Taskiq hinzugefügt — einem modernen Async-Task-Manager für Python. Er passt perfekt in die overall Async-Architektur von FastAPI. Als Message-Broker kannst du während der Generierung Redis, RabbitMQ oder Kafka wählen.
Monitoring und Logging out of the box
Die Vorlage enthält bereits integrierte fertige Anbindungen, die du normalerweise manuell aus separaten Artikeln konfigurieren musst:
- Metriken-Sammlung für Prometheus
- Tracing über OpenTelemetry
- Fehlerweiterleitung an Sentry
- Strukturiertes Logging über Loguru
All diese Optionen werden über einfache Flags oder Auswahl im interaktiven Menü aktiviert.
Schnellstart
Um das Tool auszuführen, brauchst du Git, Python und den schnellen Package-Manager uv auf deinem Rechner installiert.
Der Generator wird über pip installiert:
python3 -m pip install fastapi_template
fastapi_template
Nach dem Start erscheint ein schrittweiser Fragebogen in der Konsole. Du wählst den Projektnamen, die gewünschte DBMS, die Authentifizierungsart (JWT oder Cookie über fastapi-users), das CI/CD-Format (GitHub Actions oder GitLab CI) und zusätzliche Services.
Wenn der Generator fertig ist, gehst du in den erstellten Ordner und startest die Umgebung:
cd my_awesome_project
docker-compose up --build
Wenn du das Paket nicht lokal installieren möchtest, kannst du den Generator mit einem einzigen Befehl über Docker ausführen:
docker run --rm -it -v "$(pwd):/projects" ghcr.io/s3rius/fastapi_template
Generierung über CLI-Flags
Wenn du die automatisierte Erstellung von Microservices in deinem Unternehmen einrichtest, kannst du den interaktiven Modus deaktivieren. Das Tool akzeptiert alle Parameter über Kommandozeilenargumente:
fastapi_template \
--name billing_service \
--api-type rest \
--db postgresql \
--orm sqlalchemy \
--migrations \
--redis \
--taskiq \
--prometheus \
--ci github \
--quiet
Dieser Aufruf erstellt einen fertigen Service mit konfiguriertem SQLAlchemy, Alembic-Migrations, Taskiq-Hintergrundaufgaben, Metriken und einer GitHub-Pipeline ohne eine einzige Frage im Terminal.
Was steckt im generierten Projekt
Der generierte Code überrascht angenehm mit seiner Struktur. Es gibt kein Chaos von allem, was in eine einzige Datei gequetscht wurde main.py.
Die Architektur ist in logische Schichten unterteilt:
web/api: Router, aufgeschlüsselt nach Versionspräfixen und Modulendb: Datenbankverbindung, Models und Migrationskonfigurationservices: Geschäftslogik und Clients für externe Servicessettings.py: Typisierte Einstellungen basierend auf pydantic-settings
Das Projekt enthält sofort pytest-Tests mit etwa 90% Coverage für die Basisstruktur, konfiguriertes pre-commit mit Lintern und eine fertige docker-compose.yml mit allen ausgewählten Services. Du musst Redis oder PostgreSQL nicht separat für die lokale Entwicklung starten.
Wem dieses Projekt nützen wird
Der Generator eignet sich perfekt für zwei Szenarien.
Der erste Fall ist der schnelle Start von Hobbyprojekten und MVPs. Wenn du eine Hypothese am Wochenende testen willst, hat man keine Lust, einen halben Tag auf Boilertplate zu verwenden.
Der zweite Fall ist die Standardisierung von Microservices in einem Team. Du kannst diese Vorlage als Basis nehmen oder ihre CLI-Schnittstelle verwenden, damit neue Services im Unternehmen nach einem einzigen Standard erstellt werden mit bereits konfigurierter Telemetrie und Tests.
Wenn du in Python schreibst und häufig neue FastAPI-Backends startest, setze auf jeden Fall ein Lesezeichen für dieses Repository. Es spart viel Zeit und Nerven beim Start.
Ähnliche Projekte