Salta al contenuto principale
WIP MITDidattici

FastAPI From Scratch

Costruisci un'API REST async production-ready con FastAPI + Pydantic + SQLAlchemy 2

Stato
WIP
Licenza
MIT
Categoria
Didattici
Aggiornato

Stato del progetto

Descrizione

FastAPI From Scratch è il gemello Python di Spring Boot From Scratch: stesso approccio progressivo, stesso dominio applicativo (un sistema di gestione task condiviso), stessa filosofia 'build-your-own', ma adattato all'ecosistema Python e ai pattern moderni FastAPI 0.115+ con Pydantic v2 e SQLAlchemy 2.0 async. Il percorso copre passo dopo passo: setup pyproject.toml + uv (con fallback documentato a pip/poetry per chi preferisce tooling tradizionale), FastAPI app structure modulare con APIRouter per separare bounded context, Pydantic v2 validation profonda con discriminated unions, custom validators e computed fields, dependency injection FastAPI-native (Depends) per auth/DB/settings, database async con SQLAlchemy 2.0 + asyncpg (driver nativo PostgreSQL), Alembic per migrations versionate, autenticazione JWT con python-jose + passlib + argon2, testing pyramid completa con pytest + httpx AsyncClient + factory_boy + pytest-asyncio, observability production-grade con structlog + Prometheus FastAPI Instrumentator + healthcheck custom, deploy Uvicorn + Gunicorn workers + Dockerfile multi-stage ottimizzato. Ogni step è un branch git con esercizi opzionali, soluzione di riferimento e ADR per documentare le scelte. La documentazione MkDocs Material include diagrammi sequenza async (event loop, await yields, task scheduling, semaphore patterns), che sono spesso il punto di confusione principale per chi viene da Flask sincrono, Django o Node.js. Il progetto è MIT, ottimizzato per essere clonato e usato come scaffold per microservizi Python production-ready. Allineato con lo stack del portfolio: il pattern ml-service/ (FastAPI + Ollama + RediSearch) è citato come case study reale di produzione su VPS Hetzner.

Funzionalità chiave

  • Async/await first-class

    Ogni endpoint async, SQLAlchemy 2.0 async session, httpx AsyncClient per chiamate downstream, diagrammi sequenza event loop spiegati.

  • Pydantic v2 validation profonda

    Custom validators, discriminated unions, computed fields, JSON schema export, alias generator per snake_case ↔ camelCase API contract.

  • Dependency injection FastAPI-native

    Pattern Depends per auth, DB session, settings injection, sub-dependency, dependency override per testing.

  • SQLAlchemy 2.0 async + Alembic

    Mapped[Type] type-annotated, async session con context manager, eager loading strategy, Alembic auto-generate migrations.

  • Testing pyramid completa

    Unit test pytest, integration test con TestClient + httpx, async fixtures, factory_boy per test data, coverage 80%+ con pytest-cov.

  • OpenAPI 3.1 auto-generated

    Schema OpenAPI ricco grazie a Pydantic, response_model + status_code per ogni endpoint, tags e summaries semantici, ReDoc UI deploy.

  • Observability production-grade

    structlog JSON logging con request_id, Prometheus metrics via prometheus-fastapi-instrumentator, healthcheck endpoint custom.

Tech stack

  • FastAPI 0.115+
  • Python 3.12
  • Pydantic v2
  • SQLAlchemy 2.0
  • Alembic
  • asyncpg
  • pytest
  • httpx
  • uv
  • structlog

Casi d'uso

  • Sviluppatori Python che vogliono imparare FastAPI con pattern moderni (Pydantic v2, SQLAlchemy 2 async)
  • Sviluppatori Flask/Django che migrano ad async e vogliono capire l'event loop senza magia
  • Bootcamp e corsi che cercano materiale FastAPI didattico aggiornato al 2026
  • Team che cercano uno scaffold pulito per nuovi microservizi Python production-ready

Roadmap

  1. v0.1.0 Pianificata

    Foundation: FastAPI + Pydantic v2

    • Setup pyproject.toml + uv
    • App structure con APIRouter modulare
    • Pydantic v2 schemas + validators
    • Sync endpoint baseline + OpenAPI docs
  2. v0.5.0 Pianificata

    Async + Database + Auth

    • SQLAlchemy 2.0 async + Alembic migrations
    • JWT auth con python-jose + passlib
    • Dependency injection patterns
    • Integration test pytest async
  3. v1.0.0 Pianificata

    Observability + Deploy

    • structlog + Prometheus instrumentator
    • Dockerfile multi-stage + Uvicorn+Gunicorn
    • deploy guide VPS systemd unit
    • Documentazione MkDocs completa

A chi è rivolto

  • Hobbyisti tech
  • Pro Dev junior-mid

Quick Start

Avvia il progetto localmente in pochi comandi.

# Quick start (work-in-progress, repo non ancora pubblicato)
# git clone https://github.com/<tba>/fastapi-from-scratch.git
# cd fastapi-from-scratch
# uv venv && source .venv/bin/activate
# uv pip install -e .[dev]
# uvicorn app.main:create_app --factory --reload

Contribuisci al progetto

FastAPI From Scratch è open source. Apri una issue, proponi una pull request o lascia una stella su GitHub: ogni contributo, anche piccolo, è benvenuto.

  • ⭐ Lascia una stella se ti è utile
  • 🐛 Segnala bug o proponi feature via issue
  • 🔧 Invia pull request con fix o miglioramenti
  • 📣 Condividi il progetto se lo trovi interessante