Skip to content

joalvarezdev/base-java-cookiecutter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Base Java Cookiecutter

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.

Descripción

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.

Características principales

  • 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

Estructura del proyecto generado

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

Uso

Prerequisitos

  • Python 3.6+
  • Cookiecutter instalado: pip install cookiecutter

Generar un nuevo proyecto

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)

Configuración disponible

El archivo cookiecutter.json define las variables configurables:

  • project_name: Nombre del proyecto
  • project_dir: Directorio del proyecto (generado automáticamente)
  • project_title: Título del proyecto (sin espacios)
  • project_package: Paquete Java del proyecto
  • database: Base de datos a usar
  • version: Versión inicial del proyecto
  • openjdk: Versión de OpenJDK
  • gRPC: Configuración de gRPC
  • email_support: Email de soporte del proyecto

Herramientas incluidas

Generadores de código

  • Plop.js para generar automáticamente CRUDs completos
  • Templates para controladores, servicios, repositorios, DTOs y mappers

Desarrollo

  • 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

Base de datos

  • Liquibase para control de versiones de base de datos
  • JPA/Hibernate para ORM
  • PostgreSQL como base de datos principal

Licencia

LGPL-3.0

Autor

alvarez.joaquinez@gmail.com

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published