Schema Manager: Centralize Schemas in a Repository with Support for Schema Registry Integration

Hey all! I’d love to share a project I’ve been working on called Schema Manager. You can check out the full project on GitHub here: Schema Manager GitHub Repo

Why Schema Manager?

In many projects, each microservice handles schema files independently—publishing into a registry and generating the necessary code. But this should not be the responsibility of each microservice. With Schema Manager, you get:

  • A single repository storing all schema versions.
  • Automated schema registration in the registry when new versions are detected. It also handles the dependency graph, ensuring schemas are registered in the correct order.
  • Microservices that simply consume the schemas they need

Quick Start

For an example repository using the Schema Manager:

git clone https://github.com/charlescol/schema-manager-example.git

The Schema Manager is distributed via NPM:

npm install @charlescol/schema-manager

Future Plans

Schema Manager currently supports Protobuf and Avro schemas, integrated with Confluent Schema Registry. We plan to:

  • Extend support for additional schema formats and registries.
  • Develop a CLI for easier schema management.

Example Integration with Schema Manager

For an example, see the integration section in the README to learn how Schema Manager can fit into Kafka-based applications with multiple microservices.

Questions?

I’m happy to answer any questions or dive into specifics if you’re interested. Let me know if this sounds useful to you or if there’s anything you’d add! I’m particularly looking for feedback on the project, so any insights or suggestions would be greatly appreciated.

The project is open-source under the MIT license, so please check the GitHub repository for more details. Your contributions, suggestions, and insights are very welcome!

Hi Charles, this is interesting to my organisation, but we use JsonSchema in all its lumpy glory. I’ll have a closer look at your source code, but will it be long before you have JsonSchema support?

Hello Scot, I missed your earlier reply. Recently, I’ve been working on improving the package to support Protobuf and Avro. The code is now stable and is being used in a few projects.

The doc is up to date and you can find an example of how to integrate with it here: Example of integration with schema-manager.

The next step is to add support for JSON, which should be straightforward now that the project’s architecture is stable and extendable. I will have time to work on it in January.

I’m also looking for contributors to help with the project.

1 Like

Thanks Charles! I will have a go at a JSONSchema Parser and see if I can submit a pull request for you to review. I’m not much of a TypeScript developer, hopefully have some time over the holiday break to do something.