{"id":21697807,"url":"https://github.com/zenwave360/zenwave-sdk","last_synced_at":"2026-05-09T22:25:44.437Z","repository":{"id":37430044,"uuid":"454544051","full_name":"ZenWave360/zenwave-sdk","owner":"ZenWave360","description":"DDD and API-First tools for Event-Driven microservices. Create Software Easy to Understand.","archived":false,"fork":false,"pushed_at":"2025-06-21T07:13:43.000Z","size":28057,"stargazers_count":49,"open_issues_count":0,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-21T08:24:46.826Z","etag":null,"topics":["api-first","asyncapi","code-generator","ddd","jdl","jhipster","openapi"],"latest_commit_sha":null,"homepage":"https://www.zenwave360.io","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ZenWave360.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-01T20:41:00.000Z","updated_at":"2025-06-11T23:09:41.000Z","dependencies_parsed_at":"2023-10-12T18:59:58.337Z","dependency_job_id":"dbd3eac3-c4ea-4541-b245-1ea695931699","html_url":"https://github.com/ZenWave360/zenwave-sdk","commit_stats":null,"previous_names":[],"tags_count":110,"template":false,"template_full_name":null,"purl":"pkg:github/ZenWave360/zenwave-sdk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ZenWave360","download_url":"https://codeload.github.com/ZenWave360/zenwave-sdk/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ZenWave360%2Fzenwave-sdk/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261630364,"owners_count":23187213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-first","asyncapi","code-generator","ddd","jdl","jhipster","openapi"],"created_at":"2024-11-25T19:29:39.153Z","updated_at":"2026-05-09T22:25:44.429Z","avatar_url":"https://github.com/ZenWave360.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ZenWave SDK\n\n\u003cp align=\"center\"  markdown=\"1\"\u003e\n  \u003cimg src=\"docs/logos/code-generator-logo-dark.svg#gh-dark-mode-only\" alt=\"ZW\u003e Code Generator\" /\u003e\n  \u003cimg src=\"docs/logos/code-generator-logo-light.svg#gh-light-mode-only\" alt=\"ZW\u003e Code Generator\" /\u003e\n\u003c/p\u003e\n\n\u003e 👉 ZenWave360 Helps You Create Software Easy to Understand\n\n[![Maven Central](https://img.shields.io/maven-central/v/io.zenwave360.sdk/zenwave-sdk.svg?label=Maven%20Central\u0026logo=apachemaven)](https://search.maven.org/artifact/io.zenwave360.sdk/zenwave-sdk)\n![General Availability](https://img.shields.io/badge/lifecycle-GA-green)\n[![build](https://github.com/ZenWave360/zenwave-sdk/workflows/Build%20and%20Publish%20Maven%20Snapshots/badge.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-snapshots.yml)\n[![coverage](https://raw.githubusercontent.com/ZenWave360/zenwave-sdk/badges/jacoco.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-central.yml)\n[![branches coverage](https://raw.githubusercontent.com/ZenWave360/zenwave-sdk/badges/branches.svg)](https://github.com/ZenWave360/zenwave-sdk/actions/workflows/publish-maven-central.yml)\n[![GitHub](https://img.shields.io/github/license/ZenWave360/zenwave-sdk)](https://github.com/ZenWave360/zenwave-sdk/blob/main/LICENSE)\n\n\u003e **Note**: Starting with version 2.0.0, the Maven `groupId` has changed to `io.zenwave360`. The code remains fully compatible.\n\u003e You can find [Previous Releases Documentation](https://github.com/ZenWave360/zenwave-sdk/tree/1.7.x?tab=readme-ov-file#available-plugins) here.\n\nZenWave SDK is a configurable and extensible toolkit for **Domain Driven Design (DDD)** and **API-First** that can generate code from a mix of different models including:\n\n- ZDL Domain Language\n- AsyncAPI\n- OpenAPI\n\n**Table of Contents:**\n\n- [ZenWave SDK](#zenwave-sdk)\n  - [Jbang Instalation](#jbang-instalation)\n  - [Available Plugins](#available-plugins)\n  - [Features / Roadmap](#features--roadmap)\n  - [Building from source](#building-from-source)\n  - [Usage](#usage)\n\n## JBang Instalation\n\nThe easiest way to install ZenWave SDK is as a [JBang alias](https://www.jbang.dev/documentation/guide/latest/alias_catalogs.html):\n\n```shell\njbang alias add --fresh --force --name=zw release@zenwave360/zenwave-sdk\n```\n\nor if you prefer to use the latest **snapshot** versions:\n\n```shell\njbang alias add --fresh --force --name=zw snapshots@zenwave360/zenwave-sdk\n```\n\nor if you prefer to use the _next_ experimental/unstable **snapshot** versions:\n\n```shell\njbang alias add --fresh --force --name=zw next@zenwave360/zenwave-sdk\n```\n\nIf you plan to use **custom plugins** you can create your own [jbang-catalog.json](jbang-catalog.json) in the current folder where you want to use `jbang zw`or perform a custom instalation with a command in the following format:\n\n```shell\njbang alias add --name=zw  --force \\\n    -m=io.zenwave360.sdk.Main \\\n    --repos=mavencentral,snapshots=https://s01.oss.sonatype.org/content/repositories/snapshots \\\n    --deps=\\\norg.slf4j:slf4j-simple:1.7.36,\\\nio.zenwave360.sdk.plugins:asyncapi-spring-cloud-streams3:2.4.0,\\\nio.zenwave360.sdk.plugins:asyncapi-jsonschema2pojo:2.4.0,\\\nio.zenwave360.sdk.plugins:avro-schema-compiler:2.4.0,\\\norg.apache.avro:avro-compiler:1.12.0,\\\nio.zenwave360.sdk.plugins:asyncapi-generator:2.4.0,\\\nio.zenwave360.sdk.plugins:openapi-spring-webtestclient:2.4.0,\\\nio.zenwave360.sdk.plugins:openapi-karate:2.4.0,\\\nio.zenwave360.sdk.plugins:backend-application-default:2.4.0,\\\nio.zenwave360.sdk.plugins.customizations:kotlin-backend-application:2.4.0,\\\nio.zenwave360.sdk.plugins:zdl-to-openapi:2.4.0,\\\nio.zenwave360.sdk.plugins:zdl-to-asyncapi:2.4.0,\\\nio.zenwave360.sdk.plugins:jdl-to-asyncapi:2.4.0,\\\nio.zenwave360.sdk.plugins:zdl-to-markdown:2.4.0,\\\nio.zenwave360.sdk.plugins:openapi-controllers:2.4.0\n    io.zenwave360.sdk:zenwave-sdk-cli:2.4.0\n```\n\n## Available Plugins\n\nRefer to individual plugin's documentation for more information:\n\n| **Plugin**                                                                               | **Description**                                                  | **Model Types**          |\n|------------------------------------------------------------------------------------------|------------------------------------------------------------------|--------------------------|\n| [Backend Application Default](./plugins/backend-application-default/README.md)           | Backend Application Default                                      | ZDL                      |\n| [AsyncAPI Generator](./plugins/asyncapi-generator/README.md)                             | Generates full Java SDKs from AsyncAPI/Avro/JsonSchema           | AsyncAPI, Avro, JsonSchema |\n| [Avro Schema Generator](./plugins/avro-schema-compiler/README.md)                        | AsyncAPI JSON Schema to POJO                                     | Avro                     |\n| [AsyncAPI JSON Schema to POJO](./plugins/asyncapi-jsonschema2pojo/README.md)             | AsyncAPI JSON Schema to POJO                                     | AsyncAPI, JsonSchema     |\n| [AsyncAPI to Spring Cloud Streams 3](./plugins/asyncapi-spring-cloud-streams3/README.md) | AsyncAPI to Spring Cloud Streams 3 (old, see AsyncAPI Generator) | AsyncAPI, AVRO, JsonSchema |\n| [AsyncAPI to Terraform](./plugins/asyncapi-ops/README.md)                                | AsyncAPI to Terraform for Kafka and Schema Registry  (LAB)       | AsyncAPI, AVRO |\n| [EventCatalog Generator](./plugins/event-catalog-generator/README.md)                              | EventCatalog Generator from OpenAPI, AsyncAPI, Markdown, ZDL     | OpenAPI, AsyncAPI, Markdown, ZDL |\n| [OpenAPI Controllers](./plugins/openapi-controllers/README.md)                           | ZDL OpenAPI Controllers                                          | OpenAPI, ZDL             |\n| [OpenAPI to Spring WebTestClient](./plugins/openapi-spring-webtestclient/README.md)      | OpenAPI to Spring WebTestClient                                  | OpenAPI                  |\n| [ZDL to OpenAPI](./plugins/zdl-to-openapi/README.md)                                     | ZDL to OpenAPI and OpenAPI to ZDL                                | ZDL, OpenAPI             |\n| [ZDL to AsyncAPI](./plugins/zdl-to-asyncapi/README.md)                                   | ZDL to AsyncAPI                                                  | ZDL, AsyncAPI            |\n| [ZDL to Markdown](./plugins/zdl-to-markdown/README.md)                                   | ZDL to Markdown                                                  | ZDL                      |\n| [Java 2 JDL Reverse Engineering](./plugins/java-to-jdl/README.md)                        | Java 2 JDL Reverse Engineering                                   | Java, JDL                |\n| [Java 2 AsyncAPI Reverse Engineering](./plugins/java-to-asyncapi/README.md)              | Java 2 AsyncAPI Reverse Engineering                              | Java                     |\n| [MCP Server](./plugins/zenwave-mcp-server/README.md)                                     | ZenWave MCP Server                                               | ZDL                      |\n\n# ZenWave SDK Documentation\n\nPlease refer to the [documentation](https://zenwave360.github.io/zenwave-sdk/) website for more information.\n\n## Features / Roadmap\n\nThis is the original roadmap, fully implemented some years/versions ago. It's kept here as a testimony of the fundational features included in ZenWave SDK.\n\n- [x] ZenWave SDK CLI\n  - [x] Default parsers, processors, plugins, templating, formatters, writers, etc... for AsyncAPI, OpenAPI and JDL.\n  - [x] Help command: detailed, json, markdown, list of available plugins\n  - [x] Fork existing (custom or standard) plugin command\n- [x] ZenWave SDK Maven Plugin\n- [x] Standard Plugins\n  - [x] ZDL Backend Application (multiple architectures: hexagonal, layered, simple domain, modular monolith...)\n    - [x] Domain Entities\n    - [x] Inbound\n      - [x] Service Ports, DTOs, Mappers\n      - [x] Implementation for CRUD operations\n      - [x] Acceptance Tests: SpringData InMemory Repositories\n    - [x] Outbound: SpringData Repositories, ElasticSearch... (for REST or Async see other plugins)\n    - [x] Adapters:\n      - [x] Spring MVC\n      - [ ] ~~Spring WebFlux~~\n    - [ ] Flavors\n      - [x] MongoDB\n        - [x] Imperative\n        - [ ] ~~Reactive~~\n      - [x] JPA\n        - [x] Imperative\n        - [ ] ~~Reactive~~\n    - [x] Unit/Integration Testing\n      - [x] Edge Integration Testing: partial spring-boot context for outbound adapters (with testcontainers)\n      - [x] Sociable Vertical Testing: manual dependency setup with in memory infrastructure _test-doubles_\n      - [x] Vertical Integration Testing: full spring-boot context for inbound adapters (with testcontainers)\n  - [x] ZDL OpenAPI Controllers\n  - [x] OpenAPI to Spring WebTestClient\n  - [x] AsyncAPI Spring Cloud Streams3\n    - [x] Consumer and Producer. Imperative and Reactive.\n      - [x] Business Exceptions Dead Letter Queues Routing\n    - [x] Producer with Transactional Outbox pattern\n      - [x] For MongoDB\n      - [x] For JDBC\n    - [x] Enterprise Envelop Pattern\n    - [x] Automatically fill headers at runtime from payload paths, tracing-id supplier...\n  - [x] ZDL to Specs\n    - [x] ZDL to OpenAPI\n    - [x] ZDL to AsyncAPI\n      - [x] AsyncAPI schemas\n      - [x] AVRO schemas\n  - [x] API Testing\n    - [x] KarateDSL\n      - [x] OpenAPI to Karate E2E Tests (please use [KarateIDE VSCode Extension](https://github.com/ZenWave360/karate-ide) instead)\n      - [x] OpenAPI to Karate/ApiMock Stateful Mocks (please use [KarateIDE VSCode Extension](https://github.com/ZenWave360/karate-ide) and [ZenWave ApiMock](https://github.com/ZenWave360/zenwave-apimock) instead)\n    - [x] OpenAPI to Spring WebTestClient\n    - [x] OpenAPI to REST-assured\n    - [ ] ~~OpenAPI to Pact (_postponed sine die_)~~\n  - [x] Reverser Engineering\n    - [x] OpenAPI 2 JDL\n    - [x] Java 2 JDL\n      - [x] Spring Data MongoDB annotations\n      - [x] JPA annotations\n\n## Building from source\n\n```shell\ngit clone https://github.com/ZenWave360/zenwave-sdk.git\ncd zenwave-sdk\nmvn clean install\n```\n\n## Usage\n\nUse the following jbang format:\n\n```shell\njbang zw -p \u003cpluginConfigClass or short-code\u003e optionName=value optionName2=value\n```\n\nYou can get a list of all available plugins:\n\n```shell\n jbang zw -h list\nUsage: \u003cmain class\u003e [-f] [-h[=\u003chelpFormat\u003e]] [-p[=\u003cpluginClass\u003e]] [-d=\u003cdeps\u003e[,\n                    \u003cdeps\u003e...]]... [-r=\u003crepos\u003e[,\u003crepos\u003e...]]...\n                    [\u003cString=Object\u003e...]\n      [\u003cString=Object\u003e...]\n  -d, --deps=\u003cdeps\u003e[,\u003cdeps\u003e...]\n                             Dependencies to include in classpath\n  -f, --force                Force overwrite\n  -h, --help[=\u003chelpFormat\u003e]  Help with output format\n  -p, --plugin[=\u003cpluginClass\u003e]\n                             Plugin Class or short-code\n  -r, --repos=\u003crepos\u003e[,\u003crepos\u003e...]\n                             Repositories to search for extra dependencies\nINFO Reflections - Reflections took 3725 ms to scan 97 urls, producing 8936 keys and 63781 values\nZW\u003e SDK (2.4.0)\n\nAvailable plugins:\n\nio.zenwave360.sdk.plugins.BackendApplicationDefaultPlugin: Generates a full backend application using the provided 'layout' property (2.4.0)\nio.zenwave360.sdk.plugins.SpringCloudStreams3AdaptersPlugin: Generates Spring Cloud Streams Consumers from AsyncAPI definitions. (2.4.0)\nio.zenwave360.sdk.plugins.JDLToAsyncAPIPlugin: Generates a full AsyncAPI definitions for CRUD operations from JDL models (2.4.0)\nio.zenwave360.sdk.plugins.AsyncAPIGeneratorPlugin: Generates strongly typed SpringCloudStreams3 producer/consumer classes for AsyncAPI with Avro and JSON DTOs (2.4.0)\nio.zenwave360.sdk.plugins.ZdlToJsonPlugin: Prints to StdOut ZDL Model as JSON (2.4.0)\nio.zenwave360.sdk.plugins.SpringWebTestClientPlugin: Generates test for SpringMVC or Spring WebFlux using WebTestClient based on OpenAPI specification. (2.4.0)\nio.zenwave360.sdk.plugins.AsyncApiJsonSchema2PojoPlugin: Generate Plain Old Java Objects from OpenAPI/AsyncAPI schemas or full JSON-Schema files. (2.4.0)\nio.zenwave360.sdk.plugins.OpenAPIControllersPlugin: Generates implementations based on ZDL models and OpenAPI definitions SpringMVC generated OpenAPI interfaces. (2.4.0)\nio.zenwave360.sdk.plugins.OpenAPIToJDLPlugin: Generates JDL model from OpenAPI schemas (2.4.0)\nio.zenwave360.sdk.plugins.SpringCloudStreams3Plugin: Generates strongly typed SpringCloudStreams3 producer/consumer classes for AsyncAPI (2.4.0)\nio.zenwave360.sdk.plugins.OpenAPIKaratePlugin: Generates test for KarateDSL based on OpenAPI specification. (2.4.0)\nio.zenwave360.sdk.plugins.ZDLToOpenAPIPlugin: Generates a draft OpenAPI definitions from your ZDL entities and services. (2.4.0)\nio.zenwave360.sdk.plugins.ZdlToMarkdownPlugin: Generates Markdown glossary from Zdl Models (2.4.0)\nio.zenwave360.sdk.plugins.ZDLToAsyncAPIPlugin: Generates a draft AsyncAPI file with events from your ZDL services. (2.4.0)\nio.zenwave360.sdk.plugins.AvroSchemaGeneratorPlugin: Generates Java classes from Avro schemas using Avro Compiler. (2.4.0)\n\n\nUse: \"jbang zw -p \u003cplugin | short-code\u003e -h\" to get help on a specific plugin\n\n\nUse: \"jbang zw -p \u003cplugin | short-code\u003e -h\" to get help on a specific plugin\n```\n\nYou can include any **custom plugin** jars in the `--deps` option.\n\nJBang will use you maven settings for repository resolution, but you can also specify a custom maven repository in the `--repos` option.\n\n\nNOTE: it will list any available plugin, standard or custom, inside any of these root java packages \"io\", \"com\" or \"org\".\n\nAnd get help for a given plugin:\n\n```shell\njbang zw --help -p \u003cpluginConfigClass\u003e\n```\n\nYou can add choose a help format from the following: help, detailed, markdown, or list:\n\n```shell\njbang zw --help markdown -p \u003cpluginConfigClass\u003e\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenwave360%2Fzenwave-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzenwave360%2Fzenwave-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzenwave360%2Fzenwave-sdk/lists"}