>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Python

Zo bouw je een werkend FastAPI backend-skelet in een paar minuten

Elke keer dat ik een nieuw FastAPI-project start, zit ik vast in een Groundhog Day. Ik moet de directorystructuur opnieuw opzetten, de database verbinden, migraties schrijven, omgevingsvariabelen aansluiten, de Dockerfile bouwen en linters configureren. Het is makkelijk om een hele avond te verspillen aan deze routine voordat het eerste echte endpoint verschijnt.

FastAPI Template Logo

Natuurlijk kun je de structuur uit je vorige repository kopiëren. Maar die heeft meestal een hoop oude workarounds, onnodige afhankelijkheden en verouderde bibliotheken. Kant-en-klare boilerplates uit zoekresultaten scoren ook zelden de juiste balans, omdat de auteur TortoiseORM koos maar jij SQLAlchemy 2.0 nodig hebt, of ze zware Celery erin hebben gestopt in plaats van lightweight queues.

De FastAPI-template repository van ontwikkelaar s3rius lost dit probleem anders op. Het is niet zomaar een statische template, maar een flexibele interactieve projectgenerator.

Constructor in plaats van een starre template

Het project werkt als een terminalvragenlijst. Je start het hulpprogramma via pip, uv of Docker, beantwoordt een paar dozijn vragen en krijgt een kant-en-klare codebase op maat voor je behoeften.

Het belangrijkste voordeel van de generator is variabiliteit. De meeste templates leggen een specifieke stack op, maar hier stel je zelf de benodigde set componenten samen.

Databases en ORM naar keuze

In plaats van gebonden te zijn aan één bibliotheek, ondersteunt het hulpprogramma verschillende populaire opties voor gegevensverwerking:

  • SQLAlchemy 2.0 met async engine
  • TortoiseORM met migratiegeneratie via Aerich
  • Piccolo ORM
  • Ormar
  • Beanie voor MongoDB
  • Raw psycopg driver zonder ORM

Als je helemaal geen database nodig hebt, kun je de optie geen data-opslag kiezen. In dat geval heeft de code geen onnodige afhankelijkheden en rommelige configuratiebestanden.

REST of GraphQL

Standaard bouwt de generator een klassieke REST API met automatische Swagger-documentatie. Maar als je frontend graag via GraphQL werkt, zal de generator de wrapper instellen op basis van de Strawberry bibliotheek. Je hoeft het schema en de types niet handmatig te configureren om te beginnen.

Achtergrondtaken en queues

In plaats van logge Celery heeft de templateauteur integratie met Taskiq toegevoegd — een moderne async task manager voor Python. Het past perfect in de algehele async architectuur van FastAPI. Als message broker kun je kiezen uit Redis, RabbitMQ of Kafka tijdens de generatie.

Monitoring en logging uit de doos

De template heeft al ingebouwde, kant-en-klare integraties die je normaal gesproken handmatig moet configureren uit losse artikelen:

  • Metrics verzameling voor Prometheus
  • Tracing via OpenTelemetry
  • Foutmeldingen naar Sentry
  • Gestructureerde logging via Loguru

Al deze opties zijn in te schakelen via eenvoudige flags of selectie in het interactieve menu.

Snelle start

Om het hulpprogramma te draaien, heb je Git, Python en de snelle package manager uv op je machine geïnstalleerd.

De generator wordt geïnstalleerd via pip:

python3 -m pip install fastapi_template
fastapi_template

Na het starten verschijnt er een stapsgewijze vragenlijst in de console. Je selecteert de projectnaam, gewenste DBMS, authenticatietype (JWT of cookie via fastapi-users), CI/CD-formaat (GitHub Actions of GitLab CI) en extra services.

Wanneer de generator klaar is, ga je naar de gemaakte map en start je de omgeving:

cd my_awesome_project
docker-compose up --build

Als je het pakket niet lokaal wilt installeren, kun je de generator via Docker draaien in één regel:

docker run --rm -it -v "$(pwd):/projects" ghcr.io/s3rius/fastapi_template

Generatie via CLI flags

Als je geautomatiseerde microservice-creatie in je bedrijf instelt, kun je de interactieve modus uitschakelen. Het hulpprogramma accepteert alle parameters via command-line argumenten:

fastapi_template \
  --name billing_service \
  --api-type rest \
  --db postgresql \
  --orm sqlalchemy \
  --migrations \
  --redis \
  --taskiq \
  --prometheus \
  --ci github \
  --quiet

Met deze aanroep wordt een kant-en-klare service gemaakt met geconfigureerde SQLAlchemy, Alembic migraties, Taskiq achtergrondtaken, metrics en een GitHub pipeline zonder ook maar één vraag in de terminal.

Wat zit er in het gegenereerde project

De gegenereerde code verrast prettig met zijn structuur. Er is geen rommel van alles in één bestand main.py.

De architectuur is opgedeeld in logische lagen:

  • web/api: routers opgesplitst per versie-prefixes en modules
  • db: databaseverbinding, modellen en migratieconfiguratie
  • services: bedrijfslogica en clients voor externe services
  • settings.py: getypte instellingen gebaseerd op pydantic-settings

Het project bevat direct pytest tests met ongeveer 90% coverage voor de basestructuur, geconfigureerde pre-commit met linters en een kant-en-klare docker-compose.yml met alle geselecteerde services. Je hoeft Redis of PostgreSQL niet apart te starten voor lokale ontwikkeling.

Voor wie is dit project nuttig

De generator is perfect voor twee scenario's.

Het eerste geval is snelle start van pet projects en MVP's. Als je een hypothese in het weekend wilt testen, heb je geen zin om een halve dag aan boilerplate te besteden.

Het tweede geval is microservice-standaardisatie in een team. Je kunt deze template als basis nemen of de CLI-interface ervan gebruiken zodat nieuwe services in het bedrijf worden gemaakt volgens één standaard met al geconfigureerde telemetry en tests.

Als je in Python schrijft en vaak nieuwe FastAPI backends opzet, bookmark deze repository dan zeker. Het zal veel tijd en zenuwen besparen bij de start.

Gerelateerde projecten