Salta al contenuto principale
WIP MITDidattici

Spring Boot From Scratch

Costruisci un'API REST production-ready con Spring Boot 3, partendo da zero

Stato
WIP
Licenza
MIT
Categoria
Didattici
Aggiornato

Stato del progetto

Descrizione

Spring Boot From Scratch è un percorso didattico di 6 settimane pensato per sviluppatori junior-mid che vogliono imparare Spring Boot 3 partendo dalle fondamenta. Non è un altro tutorial copia-incolla: ogni modulo introduce un concetto (controller REST, validazione, persistenza JPA, sicurezza JWT, testing con Testcontainers, observability con Actuator) e lo applica a un dominio reale—un sistema di gestione task condiviso. Il codice è organizzato in branch progressivi (`step-01-rest-skeleton`, `step-02-validation`, `step-03-jpa`, fino a `step-12-native-image`), così puoi confrontare il tuo lavoro con la soluzione di riferimento ad ogni checkpoint. La filosofia è build-your-own: gli studenti scrivono codice, non lo osservano passivamente. Ogni step include esercizi opzionali per esplorare alternative (Hibernate vs JdbcTemplate, JWT vs Session, MapStruct vs manual mapping, Maven vs Gradle). I test sono first-class: ogni feature ha unit test (JUnit 5 + Mockito) e integration test (Testcontainers + PostgreSQL reale, non H2 in-memory). La documentazione MkDocs Material include diagrammi C4 (livelli 1-2-3), ADR (Architecture Decision Records) per ogni scelta architetturale e una sezione troubleshooting con i problemi comuni che incontrano i developer al primo approccio. Il progetto è MIT, permissivo, pensato per essere clonato, modificato e usato come scaffold per progetti reali in produzione. Allineato con il brand 'Full-Stack AI Engineer per startup e PMI IT/EU': il codice riflette pattern enterprise concreti (Clean Architecture, dependency injection via constructor, records per DTO, immutability-first, validation a system boundaries) ma rimane accessibile a chi parte completamente da zero senza assumere conoscenza pregressa di Java EE o Spring legacy.

Funzionalità chiave

  • Percorso progressivo a step

    12 step branch-based: ogni branch git è un checkpoint con codice, test e ADR. Confronto facile tra il tuo lavoro e la soluzione di riferimento.

  • JPA + Hibernate hands-on

    Entity, repository, query JPQL, native query, fetch strategy, N+1 problem detection con Hibernate statistics e p6spy.

  • Sicurezza JWT proprietaria

    Implementazione JWT HS256 senza dipendenze esterne pesanti (jjwt opzionale), refresh token rotation, password reset flow, rate limiting con Bucket4j.

  • Testing first-class

    Unit test (JUnit 5 + Mockito), integration test (Testcontainers + PostgreSQL reale), MockMvc per controller test. Coverage 80%+ enforced via JaCoCo.

  • Observability built-in

    Spring Boot Actuator + Micrometer + Prometheus, log strutturati JSON con Logback + MDC, health check personalizzati.

  • Documentazione living

    MkDocs Material con diagrammi C4 (Structurizr), ADR per ogni decisione architetturale, OpenAPI 3.1 auto-generated con springdoc.

  • Production-ready hardening

    GraalVM native image opzionale, Dockerfile multi-stage ottimizzato, profili per dev/staging/prod, secret externalization via env var.

Tech stack

  • Spring Boot 3.4
  • Java 21
  • Maven
  • Spring Data JPA
  • Hibernate 6
  • PostgreSQL 16
  • Testcontainers
  • JUnit 5
  • Mockito
  • MkDocs Material

Casi d'uso

  • Sviluppatori junior che vogliono imparare Spring Boot 3 con un percorso strutturato e branch progressivi
  • Bootcamp e corsi universitari che cercano materiale didattico open-source aggiornato a Java 21 + Spring Boot 3
  • Sviluppatori mid che vogliono ripassare pattern moderni (records, virtual threads, GraalVM native) in un contesto reale
  • Team che cercano uno scaffold pulito per nuovi progetti enterprise Spring Boot

Roadmap

  1. v0.1.0 Pianificata

    Foundation: REST + Validation + JPA

    • Step 1: Controller REST skeleton con DTO records
    • Step 2: Bean Validation con custom validator
    • Step 3: JPA repository + entity + Flyway migration
    • Step 4: Service layer con transactional boundary
    • Setup MkDocs + ADR-0001 (Clean Architecture)
  2. v0.5.0 Pianificata

    Security + Testing + Observability

    • Step 5-6: JWT auth + refresh rotation
    • Step 7: Integration test con Testcontainers
    • Step 8: Spring Boot Actuator + Prometheus
    • Step 9: Rate limiting con Bucket4j
    • Coverage JaCoCo target 80%
  3. v1.0.0 Pianificata

    Production hardening + Native Image

    • Step 10: Dockerfile multi-stage + docker-compose
    • Step 11: GraalVM native image build
    • Step 12: Performance benchmark + tuning JVM
    • Documentazione MkDocs completa + deploy guide VPS
    • Release v1.0.0 + announce community

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>/spring-boot-from-scratch.git
# cd spring-boot-from-scratch
# git checkout step-01-rest-skeleton
# ./mvnw spring-boot:run
# curl http://localhost:8080/api/v1/tasks