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
- Host: GitHub
- URL: https://github.com/springwolf/springwolf-core
- Owner: springwolf
- License: apache-2.0
- Created: 2019-01-03T09:59:00.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2024-10-28T22:46:18.000Z (6 months ago)
- Last Synced: 2024-10-29T17:38:20.649Z (6 months ago)
- Topics: 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
- Language: Java
- Homepage: https://www.springwolf.dev
- Size: 10.7 MB
- Stars: 250
- Watchers: 8
- Forks: 71
- Open Issues: 23
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-opensource-israel - Springwolf - Automated documentation for async APIs built with Spring Boot   (Projects by main language / java)
README
Springwolf
Automated documentation for event-driven applications built with Spring Boot

[](https://opensource.org/licenses/Apache-2.0)[](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-core.yml)
[](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-asyncapi.yml)
[](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-ui.yml)
[](https://github.com/springwolf/springwolf-core/actions/workflows/springwolf-plugins.yml)
[](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) |  |  |
| [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) |  |  |
| [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) |  |  |
| [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) |  |  |
| [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) |  |  |
| [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) |  |  |
| [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) |  |  |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) |  |  |
| [Core](https://github.com/springwolf/springwolf-core/tree/master/springwolf-core) |  |  |
| [UI](https://github.com/springwolf/springwolf-core/tree/master/springwolf-ui) |  |  || Bindings | Current version | SNAPSHOT version |
|----------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AMQP Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-amqp-binding) |  |  |
| [AWS SNS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-sns-binding) |  |  |
| [AWS SQS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-sqs-binding) |  |  |
| [Google PubSub Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-googlepubsub-binding) |  |  |
| [JMS Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-jms-binding) |  |  |
| [Kafka Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-kafka-binding) |  |  |
| [STOMP Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-bindings/springwolf-stomp-binding) |  |  || Add-on | Current version | SNAPSHOT version |
|------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [Common Model Converter](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-common-model-converters) |  |  |
| [Generic Binding](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-generic-binding) |  |  |
| [Json Schema](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-json-schema) |  |  |
| [Kotlinx Serialization Model Converter](https://github.com/springwolf/springwolf-core/tree/master/springwolf-add-ons/springwolf-kotlinx-serialization-model-converter) |  |  |### π 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
π»
Timon Back
π»
sam0r040
π»
Carlos Tasada
π»
jrlambs
π»
DmitriButorchin
π»
Thomas Vahrst
π»
Yasen Pavlov
π»
Arthur Geweiler
π»
CS-BASF
π»
Jeroen van Wilgenburg
π»
Michael Strelchenko
π»
Olivier Gaudefroy
π»
Omerbea
π»
Pavel Bodiachevskii
π»
Sergio RoldΓ‘n
π»
Stmated
π»
Themistoklis Pyrgiotis
π»
Zach Hubbs
π»
biergit
π»
kalarani
π»
Dipesh Singh
π»
Sakshi Jain
π»
Sheheryar Aamir
π»
jmwestbe
π»
pdalfarr
π»
Krzysztof KwiecieΕ
π»
Robert Henke
π»
Raphael De Lio
π»
Nikita Marunko
π»
Victor Levitskiy
π»
Christopher Cudennec
π»
dabeck81
π»
Jan Marten
π»
FabianBesner2020
π»
Norbert Wirges
π»
Tomas Tulka
π»
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`