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
- 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)
- 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%
- 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
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