kafka-serde-scala
kafka-serde-scala provides implicit conversions from different type class Encoder/Decoder to kafka Serializer, Deserializer, Serde.
Following target libraries are supported:
Inspired by https://github.com/hseeberger/akka-http-json.
Installation
Add dependencies for the selected integration:
- for avro4s:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-avro4s" % "0.5.0",
) 
- for circe:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-circe" % "0.5.0",
) 
- for jackson:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-jackson" % "0.5.0",
) 
- for json4s:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-json4s" % "0.5.0",
) 
- for jsoniter-scala:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-jsoniter-scala" % "0.5.0",
  "com.github.plokhotnyuk.jsoniter-scala" %% "jsoniter-scala-macros" % "0.29.2" % Provided // required only in compile-time
) 
- for play-json:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-play-json" % "0.5.0"
) 
- for upickle:
 
libraryDependencies ++= List(
  "io.github.azhur" %% "kafka-serde-upickle" % "0.5.0"
) 
Usage
Mix xxxSupport into your code which requires implicit Kafka Serde, Serializer or Deserializer, where xxx is the target library used for serialization, i.e: CirceSupport.
Provide your implicit type class instances and the magic will convert them to Kafka serializers:
- for avro4s: 
com.sksamuel.avro4s.SchemaFor[T],com.sksamuel.avro4s.ToRecord[T],com.sksamuel.avro4s.FromRecord[T] - for circe: 
io.circe.Encoder[T],io.circe.Decoder[T] - for jackson json: 
com.fasterxml.jackson.databind.ObjectMapper - for jackson binary: 
com.fasterxml.jackson.databind.ObjectMapper,org.codehaus.jackson.FormatSchema - for json4s: 
org.json4s.DefaultFormats,org.json4s.Serialization - for jsoniter-scala: 
com.github.plokhotnyuk.jsoniter_scala.core.JsonValueCodec[T], (and optionallycom.github.plokhotnyuk.jsoniter_scala.core.WriterConfigor/andcom.github.plokhotnyuk.jsoniter_scala.core.ReaderConfig) - for play-json: 
play.api.libs.json.Reads,play.api.libs.json.Writes. - for upickle: 
upickle.default.Reader,upickle.default.Writer. 
For more info, please, take a look at unit tests and at kafka-serde-scala-example which is a kafka-streams (2.0) application with kafka-serde-scala usage.
Contribution
Feel free to contribute with creating PR or opening issues.
License
This code is open source software licensed under the Apache 2.0 License.