The GraphQL schema for this project is created manually and fits the client use case. The types are declared in Avro, and the Confluent Schema Registry is used to register the schema. The main advantage of this approach is that it's very easy to set up, especially if you're already using ksqlDB. It uses a setup with Docker Compose to bring up a data cluster, create some topics and schemas, and define a table and some streams in ksqlDB. The GraphQL endpoint spins up a GraphQL Playground to easily interact with the GraphQL endpoint. Queries can be issued by sending a query message to the Projector, which awaits a response from the Projector. Mutations are sent to the command handler, and subscriptions can be used to consume messages from Kafka. The main advantage of this approach is that it's easy to set up, especially if you're already using ksqlDB.