Vai al contenuto

Spring Boot From Scratch

API REST per la gestione di progetti e task — costruita da zero con Spring Boot 3 e Java 21.

Quick Start Guida step-by-step Repo GitHub


Il dominio in una riga

Un'API per gestire progetti e i loro task con regole di business non banali: state machine controllata, archiviazione progetti, error handling standardizzato.

classDiagram
    class Project {
        UUID id
        String name
        String description
        ProjectStatus status
        Instant createdAt
        Instant updatedAt
    }
    class Task {
        UUID id
        String title
        String description
        TaskStatus status
        TaskPriority priority
        LocalDate dueDate
    }
    Project "1" --> "*" Task : has

Cosa imparerai

  • Layering Spring Boot


    Controller → Service → Repository, DTO immutabili (records), constructor injection, separation of concerns.

  • JPA + Flyway


    Entity con relazioni LAZY, query JPQL con parametri, migration versionate, vincoli CHECK lato DB.

  • Validation + RFC 7807


    Bean Validation al boundary, errori standardizzati come ProblemDetail, mai stack trace in prod.

  • Domain logic


    State machine controllata nel modello, eccezioni dedicate, regole di business nel posto giusto.

  • Testing serio


    Unit (JUnit + Mockito + AssertJ), slice (MockMvc, @DataJpaTest), Integration con PostgreSQL reale via Testcontainers.

  • Observability


    Actuator + Micrometer + Prometheus, health probes liveness/readiness, log strutturati.

  • Docker production-ready


    Dockerfile multi-stage layered JAR, utente non-root, healthcheck, docker-compose per stack locale.

  • CI/CD GitHub Actions


    Build & test su PR, docs su GitHub Pages, release con changelog auto, CodeQL, Dependabot.


Per chi è

  • Sviluppatori junior — percorso strutturato per vedere un'applicazione Spring Boot ben fatta end-to-end.
  • Sviluppatori mid — ripasso pattern moderni (records, virtual threads, RFC 7807, Testcontainers).
  • Team — scaffold pulito da clonare per nuovi servizi Spring Boot.

Licenza

Distribuito sotto licenza MIT.