Progen is a CLI tool that generates complete Spring Boot applications — build files, Java source, tests, Docker Compose, CI, database migrations, security setup and more — via a quick interactive prompt or a single JSON config file.
$ go install github.com/sivaprasadreddy/progen@latest
$ progen
✔ App Type: REST API
✔ Build Tool: Maven
✔ Persistence: Spring Data JPA
✔ Database: PostgreSQL
Generated project "myapp" successfully 🎉
A no-nonsense alternative to heavier scaffolding tools, built around three principles.
Generates apps with only the most commonly used features and configurations — no bloated boilerplate to strip out afterwards.
No network calls at generation time. Create projects on a plane, in an air-gapped environment, or behind a strict firewall.
Ships as a single Go binary. Generating a Java project doesn't require installing Node.js, Python, or any other runtime.
Two ways to get the progen binary onto your machine.
go install github.com/sivaprasadreddy/progen@latest
progen --help
Download the prebuilt binary for your OS and architecture (arm64 or
x86_64) from the
GitHub Releases page,
then move it onto your PATH.
control and
click it, choose Open, then confirm. After that, progen runs normally
from the terminal.
Three workflows: fully interactive, config-file driven for repeatable / scripted generation, or through an AI coding agent.
Launch progen with no arguments to walk through an interactive prompt covering app type, build tool, persistence, database, and optional features.
progenCreate a .progen.json file pre-filled with default values, then edit it to your liking.
progen init
# → Generated .progen.json successfullyFeed the config file back in with -c / --config to generate the project non-interactively — ideal for CI, templates, or sharing team defaults.
progen -c .progen.jsonInstall the progen agent skill into your AI coding agent, then generate a project by describing it in plain English.
npx skills add https://github.com/sivaprasadreddy/sivalabs-agent-skills --skill progenThen, inside your agent's chat, invoke the skill with a description of the project you want:
/progen a REST API for a bookstore using PostgreSQL and Flyway{
"AppType": "REST API",
"AppName": "myapp",
"GroupID": "com.mycompany",
"ArtifactID": "myapp",
"AppVersion": "1.0.0",
"BasePackage": "com.mycompany.myapp",
"BuildTool": "Maven",
"PersistenceType": "Spring Data JPA",
"DbType": "PostgreSQL",
"DbMigrationTool": "Flyway",
"SpringCloudAWSSupport": false,
"ThymeleafSupport": false,
"HTMXSupport": false,
"EmailSupport": false,
"RabbitMQSupport": false,
"RedisCachingSupport": false,
"OpenTelemetrySupport": false,
"K8sSupport": false
}
Every generated project is assembled from these configurable building blocks.
| Option | Choices |
|---|---|
| App Type | REST API · Web App · Spring Boot + Angular Full Stack |
| Build Tool | Maven · Gradle |
| Persistence | Spring Data JPA · Spring JdbcClient · jOOQ |
| Database | PostgreSQL · MySQL · MariaDB |
| DB Migration Tool | Flyway · Liquibase |
| Feature | What it adds |
|---|---|
| Thymeleaf + TailwindCSS | Server-rendered views for Web Apps, styled with Tailwind |
| HTMX | htmx-spring-boot integration for dynamic server-driven UI |
| Spring Cloud AWS | AWS integration configured via Floci |
| Spring RabbitMQ | Messaging configuration using Spring AMQP |
| Redis Caching | Spring Boot caching backed by Redis |
| Email support | MailPit + Testcontainers Mailpit for local email testing |
| OpenTelemetry | Observability instrumentation out of the box with Grafana LGTM stack |
| Kubernetes manifests | Generated based on selected features |
| Feature | What it adds |
|---|---|
| Spring Modulith | Modular architecture enforcement |
| Spring Security | HTTP Session based for Web Apps, JWT for REST APIs |
| Swagger UI | API docs via springdoc-openapi |
| Testcontainers | Testing & local development setup |
| Docker Compose | Local development environment |
| BootUI | Developer console for the running app |
| GitHub Actions | CI configuration |
| Spotless | Code formatting |
| SDKMAN | JDK/tooling version configuration |
| Taskfile | Task runner for common commands |
| Renovate | Automated dependency updates |