Essential session storage is required to sign in. Optional analytics remain off unless you allow them.
Build a REST API with Spring Boot 3 (Java 17+, jakarta.*) scaffolded from Spring Initializr. Expose @RestController endpoints (GET/POST/PUT/DELETE) for a resource, persist it with a Spring Data JPA repository (JpaRepository) over H2 or Postgres, accept request DTOs validated with @Valid + jakarta.validation constraints, and centralize errors in a @RestControllerAdvice that returns proper status codes. Use constructor injection throughout; no field @Autowired.
Correct @RestController mappings and a JpaRepository-backed entity; CRUD works end to end with sensible status codes.
@Valid + jakarta.validation on request DTOs (not raw entities); invalid input is rejected with a 400.
A @RestControllerAdvice maps exceptions to consistent responses; no leaked stack traces.
jakarta.* imports, constructor injection, Initializr layout; nothing Boot-2/javax.* stale.
Use this README structure to make the work reviewable.
DevPath fetches a read-only, size-capped snapshot. Submitted code is never executed.
# A REST CRUD API ## Goal Build a REST API with Spring Boot 3 (Java 17+, jakarta.*) scaffolded from Spring Initializr. Expose @RestController endpoints (GET/POST/PUT/DELETE) for a resource, persist it with a Spring Data JPA repository (JpaRepository) over H2 or Postgres, accept request DTOs validated with @Valid + jakarta.validation constraints, and centralize errors in a @RestControllerAdvice that returns proper status codes. Use constructor injection throughout; no field @Autowired. ## Acceptance criteria - [ ] REST + JPA: Correct @RestController mappings and a JpaRepository-backed entity; CRUD works end to end with sensible status codes. - [ ] Validation & DTOs: @Valid + jakarta.validation on request DTOs (not raw entities); invalid input is rejected with a 400. - [ ] Error handling: A @RestControllerAdvice maps exceptions to consistent responses; no leaked stack traces. - [ ] Boot 3 idiom: jakarta.* imports, constructor injection, Initializr layout; nothing Boot-2/javax.* stale. ## Verification - [ ] Document installation and run commands. - [ ] Record automated checks and their exact commands. - [ ] Add representative output, screenshots, or a short demo where useful. - [ ] Confirm failure paths and known constraints. ## Decision log ### Decision title - Context: - Choice: - Alternatives considered: - Tradeoffs: ## Evidence - Link each rubric criterion to the file, test, or artifact that demonstrates it. ## Known limitations - List what is intentionally out of scope and what should be improved next.