dr-jskill

Creates Java + Spring Boot projects: Web applications, full-stack apps with Vue.js or Angular or React or vanilla JS, PostgreSQL, REST APIs, and Docker. Use when creating Spring Boot projects, setting up Java microservices, or building enterprise applications with the Spring Framework.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dr-jskill" with this command: npx skills add jdubois/dr-jskill/jdubois-dr-jskill-dr-jskill

Spring Boot skill that follows Julien Dubois' best practices.

Overview

This agent skill helps you create Spring Boot projects following Julien Dubois' best practices. It provides tools and scripts to quickly bootstrap Spring Boot applications using https://start.spring.io.

Version Management

Centralized versions live in versions.json. All scripts read from it via scripts/lib/versions.mjs (JavaScript). Update this file to bump Java, Spring Boot fallback, Postgres, Node/npm, Testcontainers, etc.

Prerequisites

  1. Java 25 installed
  2. Node.js 22.x and NPM 10.x (for front-end development)
  3. Docker installed and running

Capabilities

  • Generate Spring Boot projects with predefined configurations
  • Support for various Spring Boot versions and dependencies
  • Follow best practices for project structure and configuration
  • Quick setup scripts for common use cases
  • Docker support for containerized deployments
  • Front-end development with multiple framework options:
    • Vue.js 3 (default) - Progressive framework with Composition API
    • React 18 - Popular library for building user interfaces
    • Angular 19 - Full-featured framework with TypeScript
    • Vanilla JavaScript - No framework, pure ES6+ with Vite

Usage

Using the Scripts

This skill includes cross-platform JavaScript (Node.js) scripts in the scripts/ directory that can be used to download pre-configured Spring Boot projects from start.spring.io. They work on Linux, macOS, and Windows.

Unified launcher (cross-platform):

node scripts/create-project my-app com.myco my-app com.myco.myapp 21 fullstack

Direct invocation:

node scripts/create-project-latest.mjs my-app com.myco my-app com.myco.myapp 21 fullstack

Flags supported:

  • --boot-version <x.y.z> / -BootVersion: override Spring Boot version
  • --project-type basic|web|fullstack / -ProjectType

Tip: The create-project-latest script auto-resolves preferred Boot 4.x and falls back to the configured springBootFallback if 4.x is not yet available. Override with --boot-version if needed.

Latest Version Project ⭐

Use the create-project-latest.mjs script to create a project with the latest Spring Boot version (automatically fetched):

node scripts/create-project-latest.mjs my-app com.mycompany my-app com.mycompany.myapp 21 web

Project types available:

  • basic - Minimal Spring Boot project
  • web - Web application with REST API capabilities
  • fullstack - Complete application with database and security

Basic Spring Boot Project

Use the create-basic-project.mjs script to create a basic Spring Boot project with essential dependencies:

node scripts/create-basic-project.mjs

Web Application

Use the create-web-project.mjs script to create a Spring Boot web application with web dependencies:

node scripts/create-web-project.mjs

Full-Stack Application

Use the create-fullstack-project.mjs script to create a comprehensive Spring Boot application with database, security, and web dependencies:

node scripts/create-fullstack-project.mjs

Best Practices

When creating Spring Boot projects:

  1. Use the latest Spring Boot version (currently 4.x) - the create-project-latest.mjs script automatically fetches it
  2. Review Spring Boot 4 critical considerations: See Spring Boot 4 Migration Guide for Jackson 3 annotations and TestContainers configuration
  3. Include Spring Boot Actuator for production-ready features
  4. Use Spring Data JPA for database access
  5. Use PostgreSQL for database - see Database Best Practices for optimization
  6. Use properties files for configuration - see Configuration Best Practices
  7. Set up foundational dotfiles: .gitignore, .env.sample, .editorconfig, .gitattributes, .dockerignore, optional .vscode/, .devcontainer/ - see Project Setup & Dotfiles
  8. Use spring-boot-docker-compose for automatic database startup during development - see Docker Guide
  9. Follow RESTful API design principles
  10. Configure proper logging with Logback - see Logging Best Practices
  11. Use Maven for dependency management
  12. Include Spring Boot DevTools for development productivity
  13. Add Spring Security only when needed - see Security Guide for best practices
  14. Configure Docker for containerized deployments - see Docker Guide
  15. Enable GraalVM native image support for faster startup - see GraalVM Guide
  16. The user must review changes before they are committed to git. Ask the user before initializing a Git repository, or running git commands.

Project Structure

The service layer is only included if it adds value (e.g. complex business logic). For simple CRUD applications, the controller can directly call the repository.

Generated projects follow the following recommended structure:

my-spring-boot-app/
├── .gitignore                 # Java + front-end + secrets (see references/PROJECT-SETUP.md)
├── .env.sample                # Template for local env vars; .env is gitignored
├── .editorconfig              # Consistent formatting across IDEs
├── .gitattributes             # Normalize line endings, better diffs
├── .dockerignore              # Slim Docker build contexts
├── .vscode/                   # Optional editor recommendations
│   ├── extensions.json
│   └── settings.json
├── .devcontainer/             # Optional Dev Container (Java 25 + Node 22 + PostgreSQL)
│   ├── devcontainer.json
│   └── docker-compose.yml
├── src/
│   ├── main/
│   │   ├── java/
│   │   │   └── com/example/app/
│   │   │       ├── Application.java
│   │   │       ├── config/
│   │   │       ├── controller/
│   │   │       ├── service/         # Only included if needed
│   │   │       ├── repository/
│   │   │       └── domain/
│   │   └── resources/
│   │       ├── static/              # Front-end web assets (HTML, CSS, JS)
│   │       │   ├── index.html
│   │       │   ├── css/
│   │       │   │   └── styles.css
│   │       │   ├── js/
│   │       │   │   └── app.js
│   │       │   └── images/
│   │       └── application.properties
│   └── test/
│       └── java/
│           └── com/example/app/
│               ├── config/
│               ├── controller/
│               ├── service/         # Only included if needed
│               ├── repository/
│               └── domain/
├── Dockerfile                   # Standard JVM Docker build
├── Dockerfile-native            # GraalVM native image build
├── compose.yaml                 # Dev database (spring-boot-docker-compose)
├── docker-compose.yml           # Full stack with PostgreSQL
├── docker-compose-native.yml    # Native image with PostgreSQL
├── pom.xml
└── README.md

Dependencies

Generated projects include: Spring Web, Spring Data JPA, Spring Boot Actuator, DevTools, PostgreSQL, Validation, Docker Compose support, Test Starter with JUnit 5, and TestContainers.

Configuration

Use .properties files (not YAML), externalize secrets via environment variables, and leverage @ConfigurationProperties for type safety. See the Configuration Guide for profiles, secrets management, and common patterns.

For database optimization, see the Database Best Practices Guide.

Security (Optional)

Spring Security is optional - only add it when you need authentication or authorization. See the Security Guide for JWT, OAuth2, role-based access, and CORS configuration.

Testing

See the Testing Guide for unit tests (Mockito, @WebMvcTest), integration tests (TestContainers + @ServiceConnection), and Given-When-Then patterns with AssertJ.

Front-End Development

Choose a front-end framework:

All options include: Vite/CLI dev server with hot reload, Bootstrap 5.3+, SPA routing, and automatic build into the Spring Boot JAR.

Docker Deployment

Spring Boot automatically manages Docker containers during development via spring-boot-docker-compose. For production, use the provided Dockerfile (JVM) or Dockerfile-native (GraalVM). See the Docker Guide for full setup, health checks, and deployment patterns.

GraalVM Native Images

Build native images via Docker (no local GraalVM needed) or locally with ./mvnw native:compile. See the GraalVM Guide for configuration, runtime hints, testing, and CI/CD integration.

Azure Deployment

Deploy to Azure Container Apps with Azure Database for PostgreSQL. See the Azure Deployment Guide.

Validation

#WhatCommand
1Build backend./mvnw clean install
2Unit tests./mvnw test
3Integration tests./mvnw verify (uses Testcontainers 2 + @ServiceConnection)
4Front-end dev servercd frontend && npm run dev

Run validation steps first. If anything fails, fix before proceeding.

Once the project is generated, go through the steps above to ensure that the generated project is fully functional and follows best practices. If any validation step fails, try to identify the issue and fix it before proceeding. This ensures that the generated project is of high quality and ready for development.

Additional Resources

Included Reference Guides

Core Spring Boot:

Data and Persistence:

Security (Optional):

  • Security Guide - Spring Security, JWT, OAuth2, authentication patterns

Testing:

  • Testing Guide - Unit and integration testing with TestContainers

Front-End Development:

Project Setup:

Deployment:

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Workspace Trash

Soft-delete protection for workspace files. Intercept file deletions and move them to a recoverable trash instead of permanent removal. Use when deleting, re...

Registry SourceRecently Updated
General

Deploy Public

Private-to-public repo sync. Copies everything except ai/ to the public mirror. Creates PR, merges, syncs releases.

Registry SourceRecently Updated
General

Lumi Diary

Your local-first memory guardian and cyber bestie. Lumi collects life fragments — a sigh, a snapshot, a roast — and stitches them into radiant, interactive m...

Registry SourceRecently Updated
General

Diffview

File comparison and diff viewer tool. Compare two files side-by-side, show colored inline diffs, compare directories, find duplicate files, and generate patc...

Registry SourceRecently Updated