An open API service indexing awesome lists of open source software.

https://github.com/springwolf/springwolf-core

Automated documentation for event-driven applications built with Spring Boot
https://github.com/springwolf/springwolf-core

ampq asyncapi documentation-generator hacktoberfest java kafka sns spring-boot spring-cloud-stream spring-jms spring-kafka spring-rabbitmq spring-websockets-stomp springfox sqs swagger

Last synced: 8 days ago
JSON representation

Automated documentation for event-driven applications built with Spring Boot

Awesome Lists containing this project

README

        


Logo Springwolf


Automated documentation for event-driven applications built with Spring Boot

![Last Version](https://img.shields.io/github/tag-pre/springwolf/springwolf-core.svg)
![GitHub commits since latest release (by SemVer including pre-releases)](https://img.shields.io/github/commits-since/springwolf/springwolf-core/latest)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)

[![springwolf-core](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-core.yml/badge.svg)](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-core.yml)
[![springwolf-asyncapi](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-asyncapi.yml/badge.svg)](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-asyncapi.yml)
[![springwolf-ui](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-ui.yml/badge.svg)](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-ui.yml)
[![springwolf-plugins](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-plugins.yml/badge.svg)](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-plugins.yml)
[![springwolf-addons](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-addons.yml/badge.svg)](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-addons.yml)
> We are on discord for any question, discussion, request etc.
> Join us at https://discord.gg/HZYqd5RPTd

### Contents

- [About](#about)
- [Demo & Documentation](#-demo---documentation)
- [Why You Should Use Springwolf](#-why-you-should-use-springwolf)
- [Usage & Example](#-usage--example)
- [Who's Using Springwolf](#-whos-using-springwolf)
- [How To Participate](#-how-to-participate)
- [Contributors](#-contributors)

### About

This project is inspired by [Springfox](https://github.com/springfox/springfox).
It documents asynchronous APIs using the [AsyncAPI specification](https://www.asyncapi.com/).

`springwolf-ui` adds a web UI, much like that of Springfox, and allows easy publishing of auto-generated payload examples.

### πŸͺ‡ Demo & πŸ“– Documentation

Take a look at the Springwolf [live demo](https://demo.springwolf.dev/) and a [generated AsyncAPI document](springwolf-examples/springwolf-kafka-example/src/test/resources/asyncapi.json).

[springwolf.dev](https://www.springwolf.dev) includes the [quickstart guide](https://www.springwolf.dev/docs/quickstart) and full documentation.

### ✨ Why You Should Use Springwolf

Springwolf exploits the fact that you already fully described your consumer endpoint (with listener annotations, such as
`@KafkaListener`, `@RabbitListener`, `@SqsListener`, etc.) and generates the documentation based on this information.

Share API Schema Definition

The AsyncAPI conform documentation can be integrated into API hubs (like [backstage](https://backstage.io/docs/features/software-catalog/descriptor-format/))
or be shared as a `json`/`yaml` file with others.

UI Based API Testing

In projects using asynchronous APIs, you may often find yourself needing to manually send a message to some topic,
whether you are manually testing a new feature, debugging or trying to understand some flow.

Using the automatically generated example payload object as a suggestion, you can publish it to the correct channel with a single click.

### πŸ”¬ Usage & Example

Protocols not supported natively can still be documented using `@AsyncListener` and `@AsyncPublisher` annotation.
More details in the documentation.

| Plugin | Example project | Current version | SNAPSHOT version |
|-----------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AMQP](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-amqp-plugin) | [AMQP Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-amqp-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-amqp?color=green&label=springwolf-amqp&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-amqp?label=springwolf-amqp&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [AWS SNS](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-sns-plugin) | [AWS SNS Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-sns-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-sns?color=green&label=springwolf-sns&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-sns?label=springwolf-sns&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [AWS SQS](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-sqs-plugin) | [AWS SQS Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-sqs-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-sqs?color=green&label=springwolf-sqs&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-sqs?label=springwolf-sqs&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Cloud Stream](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-cloud-stream-plugin) | [Cloud Stream Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-cloud-stream-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-cloud-stream?color=green&label=springwolf-cloud-stream&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-cloud-stream?label=springwolf-cloud-stream&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [JMS](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-jms-plugin) | [JMS Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-jms-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-jms?color=green&label=springwolf-jms&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-jms?label=springwolf-jms&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Kafka](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-kafka-plugin) | [Kafka Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-kafka-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-kafka?color=green&label=springwolf-kafka&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-kafka?label=springwolf-kafka&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [STOMP (WebSocket)](https://github.com/springwolf/springwolf-core/tree/master/springwolf-plugins/springwolf-stomp-plugin) | [STOMP Example](https://github.com/springwolf/springwolf-core/tree/master/springwolf-examples/springwolf-stomp-example) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-stomp?color=green&label=springwolf-stomp&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-stomp?label=springwolf-stomp&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |

Click to expand all artifacts, bindings and add-ons

| Artifact | Current version | SNAPSHOT version |
|----------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AsyncAPI implementation](https://github.com/springwolf/springwolf-core/tree/master/springwolf-asyncapi) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-asyncapi?color=green&label=springwolf-asyncapi&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-asyncapi?label=springwolf-asyncapi&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Core](https://github.com/springwolf/springwolf-core/tree/master/springwolf-core) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-core?color=green&label=springwolf-core&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-core?label=springwolf-core&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [UI](https://github.com/springwolf/springwolf-core/tree/master/springwolf-ui) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-ui?color=green&label=springwolf-ui&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-ui?label=springwolf-ui&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |

| Bindings | Current version | SNAPSHOT version |
|----------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AMQP Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-amqp-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-amqp-binding?color=green&label=springwolf-amqp-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-amqp-binding?label=springwolf-amqp-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [AWS SNS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-sns-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-sns-binding?color=green&label=springwolf-sns-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-sns-binding?label=springwolf-sns-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [AWS SQS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-sqs-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-sqs-binding?color=green&label=springwolf-sqs-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-sqs-binding?label=springwolf-sqs-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Google PubSub Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-googlepubsub-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-googlepubsub-binding?color=green&label=springwolf-googlepubsub-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-googlepubsub-binding?label=springwolf-googlepubsub-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [JMS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-jms-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-jms-binding?color=green&label=springwolf-jms-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-jms-binding?label=springwolf-jms-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Kafka Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-kafka-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-kafka-binding?color=green&label=springwolf-kafka-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-kafka-binding?label=springwolf-kafka-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [STOMP Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-stomp-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-stomp-binding?color=green&label=springwolf-stomp-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-stomp-binding?label=springwolf-stomp-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |

| Add-on | Current version | SNAPSHOT version |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Common Model Converter](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-common-model-converters) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-common-model-converters?color=green&label=springwolf-common-model-converters&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-common-model-converters?label=springwolf-common-model-converters&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Generic Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-generic-binding) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-generic-binding?color=green&label=springwolf-generic-binding&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-generic-binding?label=springwolf-generic-binding&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Json Schema](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-json-schema) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-json-schema?color=green&label=springwolf-json-schema&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-json-schema?label=springwolf-json-schema&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |
| [Kotlinx Serialization Model Converter](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter) | ![Maven Central](https://img.shields.io/maven-central/v/io.github.springwolf/springwolf-kotlinx-serialization-model-converter?color=green&label=springwolf-kotlinx-serialization-model-converter&style=plastic) | ![Sonatype Nexus (Snapshots)](https://img.shields.io/nexus/s/io.github.springwolf/springwolf-kotlinx-serialization-model-converter?label=springwolf-kotlinx-serialization-model-converter&server=https%3A%2F%2Fs01.oss.sonatype.org&style=plastic) |

### πŸš€ Who's Using Springwolf

- [2bPrecise](https://2bprecisehealth.com/)
- [aconium](https://www.aconium.eu)
- [Alten Italia](https://www.alten.it/)
- [b.well Connected Health](https://www.icanbwell.com/)
- [DGARNE - Public Service of Wallonia (BE)](https://agriculture.wallonie.be/accueil)
- [LVM Versicherung](https://www.lvm.de/privatkunden/)
- [OTTO](https://www.otto.de)
- [OTTO Payments](https://www.ottogroup.com/en/careers/kgen/ottopayments.php)
- [Teambank](https://www.teambank.de)

Comment in [this PR](https://github.com/springwolf/springwolf-core/issues/342) to add your company and spread the word

### ✏️ How To Participate

Check out our [CONTRIBUTING.md](CONTRIBUTING.md) guide.

Testing SNAPSHOT version

#### Sonatype snapshots

Add the following to the `repositories` closure in `build.gradle`:

```groovy
repositories {
// ...
maven {
url "https://s01.oss.sonatype.org/content/repositories/snapshots" // build.gradle
// url = uri("https://s01.oss.sonatype.org/content/repositories/snapshots") // build.gradle.kts
}
}
```

Or add the `repository` to your `pom.xml` if you are using maven:

```xml


oss-sonatype
oss-sonatype
https://s01.oss.sonatype.org/content/repositories/snapshots

true

```

#### Local Snapshot Build

To test with local builds, run the `publishToMavenLocal` gradle task. The current version number is set in [`.env`](.env) file.

Do not forget to add `mavenLocal()` to the `repositories` section.

### πŸ‘ Contributors

Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)):



Stav Shamir
Stav Shamir

πŸ’»
Timon Back
Timon Back

πŸ’»
sam0r040
sam0r040

πŸ’»
Carlos Tasada
Carlos Tasada

πŸ’»
jrlambs
jrlambs

πŸ’»
DmitriButorchin
DmitriButorchin

πŸ’»
Thomas Vahrst
Thomas Vahrst

πŸ’»


Yasen Pavlov
Yasen Pavlov

πŸ’»
Arthur Geweiler
Arthur Geweiler

πŸ’»
CS-BASF
CS-BASF

πŸ’»
Jeroen van Wilgenburg
Jeroen van Wilgenburg

πŸ’»
Michael Strelchenko
Michael Strelchenko

πŸ’»
Olivier Gaudefroy
Olivier Gaudefroy

πŸ’»
Omerbea
Omerbea

πŸ’»


Pavel Bodiachevskii
Pavel Bodiachevskii

πŸ’»
Sergio RoldΓ‘n
Sergio RoldΓ‘n

πŸ’»
Stmated
Stmated

πŸ’»
Themistoklis Pyrgiotis
Themistoklis Pyrgiotis

πŸ’»
Zach Hubbs
Zach Hubbs

πŸ’»
biergit
biergit

πŸ’»
kalarani
kalarani

πŸ’»


Dipesh Singh
Dipesh Singh

πŸ’»
Sakshi Jain
Sakshi Jain

πŸ’»
Sheheryar Aamir
Sheheryar Aamir

πŸ’»
jmwestbe
jmwestbe

πŸ’»
pdalfarr
pdalfarr

πŸ’»
Krzysztof KwiecieΕ„
Krzysztof KwiecieΕ„

πŸ’»
Robert Henke
Robert Henke

πŸ’»


Raphael De Lio
Raphael De Lio

πŸ’»
Nikita Marunko
Nikita Marunko

πŸ’»
Victor Levitskiy
Victor Levitskiy

πŸ’»
Christopher Cudennec
Christopher Cudennec

πŸ’»
dabeck81
dabeck81

πŸ’»
Jan Marten
Jan Marten

πŸ’»
FabianBesner2020
FabianBesner2020

πŸ’»


Norbert Wirges
Norbert Wirges

πŸ’»
Tomas Tulka
Tomas Tulka

πŸ’»
Elys Rivero
Elys Rivero

πŸ’»

To add yourself as a contributor, install the [all-contributors CLI](https://allcontributors.org/docs/en/cli/installation) and run:
1. `all-contributors check`
2. `all-contributors add code`
3. `all-contributors generate`