Spring Boot + Spring Security + JPA + Flyway Starter
Spring Boot, Java, PostgreSQL, Spring Data JPA, Spring Security, and Gradle form a backend service configuration where the generated project is centered on a backend service. Better Fullstack can scaffold this exact compatibility-checked selection.
01 / selection
Stack at a glance
| Role | Technology | Repository description | Scope |
|---|---|---|---|
| Backend | Spring Boot | Production-grade Java framework with embedded server and auto-configuration | Primary backend |
| Language | Java | Classic Java sources | Project-wide |
| Database | PostgreSQL | Advanced SQL database | Project-wide |
| ORM | Spring Data JPA | Repository abstraction built on JPA and Hibernate | Scoped to the backend |
| Authentication | Spring Security | Authentication and authorization for Spring applications | Scoped to the backend |
| Build tool | Gradle | Flexible Java build tool with Gradle Wrapper support | Scoped to the backend |
| Testing | JUnit 5 | Modern Java unit testing platform | Scoped to the backend |
| Testing | Testcontainers | Disposable Docker-based integration testing | Scoped to the backend |
| Libraries | Spring Boot Actuator | Health, metrics, and diagnostics endpoints for production visibility | Scoped to the backend |
| Libraries | Flyway | Versioned SQL migrations for JPA-backed applications | Scoped to the backend |
02 / architecture
How the pieces fit
- The generated stack is centered on a backend service with no browser frontend.
- Spring Data JPA is scoped to the backend.
- Spring Security is scoped to the backend.
- Gradle is scoped to the backend.
- JUnit 5 is scoped to the backend.
- Testcontainers is scoped to the backend.
- Spring Boot Actuator is scoped to the backend.
- Flyway is scoped to the backend.
03 / output
What gets generated
The virtual generator produced 23 files across 21 directories. The output is a single-directory project.
Top-level entries
- ./.env.example
- ./.gitattributes
- ./.gitignore
- ./AGENTS.md
- ./CLAUDE.md
- ./README.md
- ./build.gradle.kts
- ./gradle
- ./gradlew
- ./gradlew.bat
- ./settings.gradle.kts
- ./src
Representative files
- README.md
- build.gradle.kts
- src/main/java/com/example/myapp/Application.java
- src/main/java/com/example/myapp/config/SecurityConfig.java
- src/main/java/com/example/myapp/controller/HealthController.java
- src/main/java/com/example/myapp/controller/UserController.java
- src/main/java/com/example/myapp/domain/AppUser.java
- src/main/java/com/example/myapp/repository/AppUserRepository.java
04 / create
Create command
This is the canonical Bun command generated for the selection.
bun create better-fullstack@latest my-app --ecosystem java --database postgres --java-web-framework spring-boot --java-build-tool gradle --java-orm spring-data-jpa --java-auth spring-security --java-api none --java-logging none --java-libraries spring-actuator flyway --java-testing-libraries junit5 testcontainers --email none --observability none --caching none --search none --ai-docs claude-md agents-md05 / builder
Open in the builder
- eco
- java
- db
- postgres
- au
- none
- jbt
- gradle
- jorm
- spring-data-jpa
- jauth
- spring-security
- jlib
- spring-actuator,flyway
- jtest
- junit5,testcontainers
06 / checks
Compatibility notes
Compatibility checked against Better Fullstack types version 2.8.0.
The generated record has 0 graph issues and 0 disabled selected options. This is a compatibility check, not a claim that this exact scaffold received a runtime smoke verification.
- The generated local datasource uses H2 in PostgreSQL compatibility mode. Before deploying to PostgreSQL, add its JDBC driver and configure spring.datasource.url, username, password, and driver-class-name.
07 / fit
When to choose this shape
Choose this shape when the generated project should expose backend functionality without a browser frontend.
08 / next
Related stacks and guide
Need a walkthrough? Read the related stack guide.
09 / faq
Questions
Is this combination supported?
It passes the repository's compatibility analysis, selected-option checks, stack graph validation, project schema parsing, and virtual generation. That result is described here as compatibility checked.
Does it generate one app or separate parts?
The generated project is centered on a backend service. The actual generated output uses a single-directory layout.
How can I customize the selection?
Open the generated builder link above. Its query parameters reproduce this selection, and the builder can change compatible options before generating a new command.