CLI interactivo para generar APIs REST Spring Boot desde un template seguro, en segundos.
Olvídate de la configuración manual. Responde 3 preguntas y obtén un proyecto completo con autenticación JWT + OAuth2, monitoreo Prometheus, Flyway, Docker y más.
- Clona el template spring-secure-api-starter con shallow clone
- Refactoriza packages, artifactId y groupId en todo el proyecto
- Renombra la clase principal automáticamente
- Configura el nombre de la BD en
docker-compose.yamlyapplication.yml - Soporta MySQL con Flyway migrations
- Elige el directorio donde se creará el proyecto
- Default: carpeta padre del wizard
- Auth: Spring Security + JWT + OAuth2 (Google/GitHub)
- DB: MySQL + Flyway
- Monitoreo: Prometheus + Grafana + Loki
- Documentación: Swagger UI / OpenAPI
- Correo: SMTP con rate limiting
| Herramienta | Versión |
|---|---|
| Java | 17+ |
| Git | Cualquier versión moderna |
Nota: Maven solo es necesario si compilás desde el código fuente. Si usás el JAR directo no hace falta.
Linux / macOS:
curl -L -o api-wizard.jar "https://github.com/FedeHerrera10/api-wizard/releases/download/v1.0.0/api-wizard.jar"Windows (cmd o PowerShell):
curl.exe -L -o api-wizard.jar "https://github.com/FedeHerrera10/api-wizard/releases/download/v1.0.0/api-wizard.jar"git clone https://github.com/FedeHerrera10/api-wizard.git
cd api-wizard
mvn clean package -qEl JAR se genera en target/api-wizard.jar.
java -jar api-wizard.jar init [opciones]| Flag | Descripción | Default |
|---|---|---|
-n, --name |
Nombre del proyecto | my-api |
-p, --package |
Package base (ej: com.acme.miapi) |
com.fedeherrera.{name} |
-db, --db-name |
Nombre de la base de datos | {name} en snake_case |
-t, --db-type |
Tipo de base de datos | postgres |
-o, --output |
Directorio de salida | Carpeta padre ../ |
-h, --help |
Muestra la ayuda | - |
-V, --version |
Muestra la versión | - |
java -jar api-wizard.jar initEl asistente te guiará paso a paso:
Nombre del proyecto [my-api]: ecommerce-api
Package Base [com.fedeherrera.ecommerceapi]: com.acme.ecommerce
Tipo de base de datos [postgres]: mysql
Nombre de la Base de Datos [ecommerce_api]:
java -jar api-wizard.jar init \
-n ecommerce-api \
-p com.acme.ecommerce \
-t mysql \
-db ecommerce_db \
-o ~/workspaceCuando ejecutás init, el wizard realiza estas transformaciones automáticamente:
- Clona el template (shallow clone) en el directorio de salida
- Limpia los metadatos Git del template original
- Actualiza
pom.xmlcon el nuevo artifactId y groupId - Refactoriza todos los packages Java (
src/main/javaysrc/test/java) - Configura
application.ymlcon el nombre de la aplicación - Renombra la clase principal a
{Proyecto}Application - Aplica el nombre de la base de datos en
docker-compose.yamlyapplication.yml - Copia
.env_examplea.envy configura las variablesAPP_NAME,DB_TYPEyDB_NAMEcon los valores indicados.
ecommerce-api/
├── docker-compose.yaml
├── Dockerfile
├── pom.xml
├── mvnw / mvnw.cmd
├── src/
│ ├── main/
│ │ ├── java/com/acme/ecommerce/
│ │ │ ├── EcommerceApiApplication.java
│ │ │ ├── config/
│ │ │ ├── controller/
│ │ │ ├── service/
│ │ │ ├── repository/
│ │ │ └── entity/
│ │ └── resources/
│ │ └── application.yml
│ └── test/
│ └── java/com/acme/ecommerce/
└── prometheus_config/
# Proyecto básico
java -jar api-wizard.jar init -n blog-api
# Proyecto completo con todas las opciones
java -jar api-wizard.jar init \
-n inventario-api \
-p com.empresa.inventario \
-t postgres \
-db inventario_db \
-o ~/dev
# Ver ayuda
java -jar api-wizard.jar init --helpAgregar al ~/.bashrc o ~/.zshrc:
alias api-wizard='java -jar /ruta/completa/api-wizard.jar'Crear api-wizard.bat en una carpeta del PATH:
@java -jar C:\ruta\completa\api-wizard-1.0-SNAPSHOT.jar %*Después de configurar el alias:
api-wizard init -n mi-apiapi-wizard/
├── src/main/java/com/fedeherrera/cli/
│ ├── Main.java # Entry point
│ ├── ApiWizardCommand.java # Comando raiz con subcomandos
│ └── command/
│ ├── InitCommand.java # Orquestacion del wizard
│ ├── NamingUtils.java # Utilidades de naming
│ ├── GitUtils.java # Operaciones Git
│ ├── ProjectConfigurator.java # Configuracion de archivos
│ └── PackageRefactorer.java # Refactor de packages
├── pom.xml # Build con maven-shade-plugin
├── DEPLOY.md # Instrucciones de deploy
└── README.md
MIT