Springwolf
Automated documentation for event-driven applications built with Spring Boot
![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)
![springwolf-addons](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-addons.yml/badge.svg)
We are on discord for any question, discussion, request etc.
Join us at https://discord.gg/HZYqd5RPTd
Contents
About
This project is inspired by Springfox.
It documents asynchronous APIs using the AsyncAPI specification.
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 and a generated AsyncAPI document.
springwolf.dev includes the quickstart guide 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.
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
Comment in this PR to add your company and spread the word
βοΈ How To Participate
Check out our 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):
To add yourself as a contributor, install the all-contributors CLI and run:
all-contributors check
all-contributors add <username> code
all-contributors generate