Un template de proyecto Cookiecutter para generar aplicaciones Java con Spring Boot, diseñado para crear APIs REST con arquitectura modular y buenas prácticas.
Este proyecto es un cookiecutter template que genera automáticamente la estructura base de una aplicación Java con Spring Boot. Incluye configuración completa para desarrollo de APIs REST con todas las capas arquitectónicas necesarias: controladores, servicios, repositorios, DTOs y mappers.
- Spring Boot 3.5.2 con Java 17/21
- Arquitectura por capas con separación clara de responsabilidades
- PostgreSQL como base de datos principal con Liquibase para migraciones
- OpenAPI/Swagger para documentación automática de APIs
- Docker y Docker Compose para desarrollo y despliegue
- gRPC opcional (servidor/cliente)
- Validación de datos con Spring Validation
- Manejo global de excepciones
- Logging configurado con Logback
- Actuator para métricas y health checks
- PMD para análisis estático de código
- Generadores de código con Plop.js para CRUD automático
proyecto-generado/
├── src/main/java/com/joalvarez/proyecto/
│ ├── config/ # Configuraciones de la aplicación
│ ├── controller/ # Controladores REST
│ ├── data/
│ │ ├── dao/ # Data Access Objects
│ │ ├── dto/ # Data Transfer Objects
│ │ ├── mapper/ # Mappers entre entidades
│ │ └── repository/ # Repositorios JPA
│ ├── exception/ # Manejo de excepciones
│ ├── service/ # Lógica de negocio
│ └── shared/ # Utilidades compartidas
├── provision/ # Generadores de código automático
├── linters/ # Configuración de linters
├── docker-compose.yml # Orquestación de contenedores
└── Taskfile.yml # Tareas automatizadas
- Python 3.6+
- Cookiecutter instalado:
pip install cookiecutter
cookiecutter https://github.com/joalvarezdev/base-java-cookiecutter.git
El template solicitará información como:
- project_name: Nombre del proyecto
- database: Tipo de base de datos (PostgreSQL por defecto)
- openjdk: Versión de Java (17 o 21)
- gRPC: Configuración gRPC (Sin gRPC, gRPC Server, gRPC Client)
El archivo cookiecutter.json
define las variables configurables:
project_name
: Nombre del proyectoproject_dir
: Directorio del proyecto (generado automáticamente)project_title
: Título del proyecto (sin espacios)project_package
: Paquete Java del proyectodatabase
: Base de datos a usarversion
: Versión inicial del proyectoopenjdk
: Versión de OpenJDKgRPC
: Configuración de gRPCemail_support
: Email de soporte del proyecto
- Plop.js para generar automáticamente CRUDs completos
- Templates para controladores, servicios, repositorios, DTOs y mappers
- Gradle como sistema de build
- Docker para contenerización
- TaskFile para automatización de tareas
- PMD para análisis de código
- Prettier para formateo de código
- Liquibase para control de versiones de base de datos
- JPA/Hibernate para ORM
- PostgreSQL como base de datos principal
LGPL-3.0