Readme.md
> :warning: **This project is not actively maintained**: Use [insulator2](https://github.com/andrewinci/insulator2) instead
<h1 align="center">
<br>
<img src="assets/icon.png" alt="Insulator" width="200">
<br>
Insulator
<br>
</h1>
<h4 align="center">A tool for devs to debug Kafka based applications and services</h4>
<br/>
<p align="center">
<a href="https://github.com/andrewinci/Insulator/releases">
<img src="https://github.com/andrewinci/Insulator/workflows/Release/badge.svg"
alt="Release"/>
</a>
<a href="https://github.com/andrewinci/Insulator/actions?query=workflow%3ACI">
<img src="https://github.com/andrewinci/Insulator/workflows/CI/badge.svg"
alt="CI"/>
</a>
<a href="https://codeclimate.com/github/andrewinci/Insulator/test_coverage">
<img src="https://api.codeclimate.com/v1/badges/b9b6bbebd21238c333ba/test_coverage"
alt="Coverage"/>
</a>
<a href="https://codeclimate.com/github/andrewinci/Insulator/maintainability">
<img src="https://api.codeclimate.com/v1/badges/b9b6bbebd21238c333ba/maintainability"
alt="code quality"/>
</a>
<a href="https://snyk.io/test/github/andrewinci/Insulator">
<img src="https://snyk.io/test/github/andrewinci/Insulator/badge.svg"
alt="Snyk"/>
</a>
</p>
<p align="center">
<a href="https://andrewinci.github.io/Insulator/wiki/">Wiki</a> •
<a href="#key-features">Key Features</a> •
<a href="#development">Development</a> •
<a href="#credits">Credits</a> •
<a href="#support">Support</a> •
<a href="#license">License</a>
</p>
<p align="center">
<img src="assets/insulator_dark_mode.gif">
</p>
## Installation
Download the binary from the latest release for your OS. Learn more [here](https://andrewinci.github.io/Insulator/wiki/Installation/).
[![Mac release](https://badgen.net/badge/icon/Mac%20Os?label=Download%20Latest%20Release&color=orange)](https://github.com/andrewinci/Insulator/releases/latest/download/insulator-mac.zip)
[![Windows release](https://badgen.net/badge/icon/Windows?label=Download%20Latest%20Release&color=orange)](https://github.com/andrewinci/Insulator/releases/latest/download/insulator-win.zip)
[![Debian release](https://badgen.net/badge/icon/Debian?label=Download%20Latest%20Release&color=orange)](https://github.com/andrewinci/Insulator/releases/latest/download/insulator-debian.zip)
![brew cask install andrewinci/tap/insulator](https://badgen.net/badge/icon/brew%20cask%20install%20andrewinci%2Ftap%2Finsulator?label=🍻%20Brew&color=orange)
## Key Features
* **Clusters**
* Authentication with: PLAN, SSL and SASL (SCRAM or PLAIN) authentication
* **Topics**
* List available topics
* Messages count and basic topic info
* Delete a topic
* Create a topic with basic configuration (Compaction policy, \#Partitions, ...)
* Topic configurations
* **Consumer**
* Avro and String deserialization
* Seek based on record timestamp
* Easy search and filtering
* **Schema registry**
* List subjects
* Show all schema versions for a given subject
* **Producer**
* Avro producer with **autocompletion** based on the schema
* String producer
* Send tombstones
* 🚧 **Consumer groups** 🚧
* List consumer groups
* Show topics, partitions and lags
* Delete consumer groups
* **Cross platform**
* Windows, macOS and Linux ready.
* **Dark/Light theme**
* **Auto-update**
* **ReadOnly mode**
## Development
The JDK version used is the adoptjdk 14.
To run the integration tests in headless mode, run
```bash
export _JAVA_OPTIONS="-Djava.awt.headless=true -Dtestfx.robot=glass -Dtestfx.headless=true -Dprism.order=sw -Dprism.text=t2k -Dtestfx.setup.timeout=2500 -Dheadless.geometry=1920x1080-64"
./gradlew app:integrationTest
```
To package the app, JPackage is used. The call is wrapped into the `gradle` task `app:packageApp`.
Notice that, to package the app in Ubuntu, `binutils` and `fakeroot` are required.
See https://openjdk.java.net/jeps/343 for more info.
### Build the documentation
The documentation for the github page is available under the `/docs/` folder.
To build and serve it, use the following.
```bash
bundle exec jekyll serve
```
### Use a specific GH (pre)release in the bootstrap
At startup, the bootstrap checks if a `DEV_MODE` file with the release tag is available.
```bash
# MAC OS
echo "<version-tag>" > ~/Library/Application\ Support/insulator/DEV_MODE
# Linux
echo "<version-tag>" > ~/.config/Insulator/DEV_MODE
```
## Credits
[JetBrains](https://www.jetbrains.com/?from=Insulator)
[update4j](https://github.com/update4j/update4j)
## Support
<a href="https://www.buymeacoffee.com/andreavinci" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;" ></a>
## License
GPL-3.0