The Open Source Community Tooling Built on JSON Schema

06-11-2020

I am picking up my research into the open source tooling that is built around the common API specifications, and after looking at Postman collections, OpenAPI, Swagger, GraphQL, and gRPC, I wanted to look at JSON Schema. OpenAPI, AsyncAPI, and others use JSON Schema, and the ways in which JSON is used applies acros sthe API lifecycle. Here is the cream off the top of the open source tooling that I found being built on top of JSON Schema--providing another interesting dimension of what is happening.

Normalization

  • normalizr - (forks: 774) (stars: 19032) (watchers: 19032) - normalizes nested json according to a schema

Forms

  • react jsonschema form - (forks: 1365) (stars: 8497) (watchers: 8497) - a react component for building web forms from json schema.
  • angular schema form - (forks: 662) (stars: 2422) (watchers: 2422) - generate forms from a json schema, with angularjs!
  • jsonform - (forks: 456) (stars: 2025) (watchers: 2025) - build forms from json schema. easily template-able. compatible with bootstrap 3 out of the box.
  • alpaca - (forks: 360) (stars: 1122) (watchers: 1122) - alpaca provides the easiest way to generate interactive html5 forms for web and mobile applications. it uses json schema and simple handlebars templates to generate great looking, dynamic user interfaces on top of twitter bootstrap, jquery ui, jquery mobile and html5.
  • ncform - (forks: 110) (stars: 853) (watchers: 853) - 🍻 ncform, a very nice configuration generation way to develop forms ( vue, json-schema, form, generator )
  • react form generator - (forks: 45) (stars: 607) (watchers: 607) - generate, validate, and parse react forms using mongoose-inspired json schemas
  • json forms - (forks: 154) (stars: 494) (watchers: 494) - json schema to html form generator, supporting dynamic subschemas (on the fly resolution). extensible and customizable library with zero dependencies. bootstrap add-ons provided
  • ngx schema form - (forks: 153) (stars: 398) (watchers: 398) - html form generation based on json schema
  • angular2 json schema form - (forks: 189) (stars: 282) (watchers: 282) - angular 2 json schema form builder
  • native - (forks: 51) (stars: 348) (watchers: 348) - generate a form using json schema and vue.js
  • react schema form - (forks: 100) (stars: 303) (watchers: 303) - react form based on json schema for form generation and validation
  • react schema form - (forks: 100) (stars: 303) (watchers: 303) - react form based on json schema for form generation and validation
  • vue json ui editor - (forks: 64) (stars: 305) (watchers: 305) - edit json in ui form with json schema and vue.js
  • shape form - (forks: 4) (stars: 295) (watchers: 295) - a form library that uses json schema and works with redux. originally a part of the takeshape react web client.
  • vuetify jsonschema form - (forks: 66) (stars: 205) (watchers: 205) - generate forms for the vuetify ui library (vuejs) based on annotated json schemas.

Validation

  • ajv - (forks: 565) (stars: 7479) (watchers: 7479) - the fastest json schema validator. supports draft-04/06/07
  • jsonschema - (forks: 415) (stars: 2808) (watchers: 2808) - an(other) implementation of json schema for python
  • json schema - (forks: 309) (stars: 2827) (watchers: 2827) - php implementation of json schema.
  • gojsonschema - (forks: 230) (stars: 1515) (watchers: 1515) - an implementation of json schema, draft v4 v6 & v7 - go language
  • json schema validator - (forks: 356) (stars: 1269) (watchers: 1269) - a json schema validation implementation in pure java, which aims for correctness and performance, in that order
  • resume schema - (forks: 192) (stars: 1332) (watchers: 1332) - json-schema is used here to define and validate our proposed resume json
  • jsonschema - (forks: 212) (stars: 1289) (watchers: 1289) - json schema validation
  • json schema - (forks: 209) (stars: 1179) (watchers: 1179) - ruby json schema validator
  • tv4 - (forks: 183) (stars: 1101) (watchers: 1101) - tiny validator for json schema v4
  • NJsonSchema - (forks: 300) (stars: 693) (watchers: 693) - json schema reader, generator and validator for .net
  • JSV - (forks: 79) (stars: 611) (watchers: 611) - a javascript implementation of an extendable, fully compliant json schema validator.
  • json schema - (forks: 203) (stars: 518) (watchers: 518) - json schema validator for java, based on the org.json api
  • revalidator - (forks: 88) (stars: 569) (watchers: 569) - a cross-browser / node.js validator powered by json schema
  • schema inspector - (forks: 46) (stars: 469) (watchers: 469) - schema-inspector is an json api sanitisation and validation module.
  • JSON Schema Test Suite - (forks: 121) (stars: 356) (watchers: 356) - a language agnostic test suite for the json schema specifications
  • json - (forks: 25) (stars: 349) (watchers: 349) - a robust json decoder/encoder with support for schema validation.
  • z schema - (forks: 91) (stars: 288) (watchers: 288) - json schema validator written in javascript for nodejs and browsers
  • json schema benchmark - (forks: 34) (stars: 314) (watchers: 314) - benchmarks for node.js json-schema validators
  • schematic - (forks: 33) (stars: 305) (watchers: 305) - a go point of view on json schema
  • djv - (forks: 24) (stars: 264) (watchers: 264) - dynamic json schema validator - supports draft-04/06
  • postgres json schema - (forks: 20) (stars: 263) (watchers: 263) - json schema validation for postgresql
  • python fastjsonschema - (forks: 39) (stars: 253) (watchers: 253) - fast json schema validator for python.
  • json schema - (forks: 21) (stars: 261) (watchers: 261) - json schema validator for php
  • pykwalify - (forks: 73) (stars: 234) (watchers: 234) - python yaml/json schema validation library
  • JSONSchema.swift - (forks: 43) (stars: 210) (watchers: 210) - json schema validator in swift
  • json schema validator - (forks: 90) (stars: 186) (watchers: 186) - a fast java json schema validator that supports draft v4, v6, v7 and v2019-09
  • jayschema - (forks: 21) (stars: 219) (watchers: 219) - [unmaintained] - a comprehensive json schema validator for node.js

Editor

  • json editor - (forks: 1084) (stars: 5388) (watchers: 5388) - json schema based editor
  • json schema editor visual - (forks: 84) (stars: 486) (watchers: 486) - a json-schema editor of high efficient and easy-to-use, base on react.
  • json schema - (forks: 39) (stars: 402) (watchers: 402) - jsonschema.net public repository

Code Generator

  • jsonschema2pojo - (forks: 1379) (stars: 5078) (watchers: 5078) - generate java types from json or json schema and annotates those types for data-binding with jackson, gson, etc
  • quicktype - (forks: 417) (stars: 4718) (watchers: 4718) - generate types and converters from json, schema, and graphql
  • typescript json schema - (forks: 166) (stars: 1208) (watchers: 1208) - generate json-schema from your typescript sources
  • json schema to typescript - (forks: 150) (stars: 1241) (watchers: 1241) - compile jsonschema to typescript type declarations
  • python jsonschema objects - (forks: 74) (stars: 274) (watchers: 274) - automatic python binding generation from json schemas
  • Schema.NET - (forks: 49) (stars: 275) (watchers: 275) - schema.org objects turned into strongly typed c# poco classes for use in .net. all classes can be serialized into json/json-ld and xml, typically used to represent structured data in the head section of html page.
  • dtsgenerator - (forks: 65) (stars: 255) (watchers: 255) - typescript d.ts file generate from json schema file
  • php json schema - (forks: 35) (stars: 249) (watchers: 249) - high definition php structures with json-schema based validation
  • generate - (forks: 61) (stars: 206) (watchers: 206) - generates go (golang) structs from json schema.

Fake Data

  • mimesis - (forks: 246) (stars: 2812) (watchers: 2812) - mimesis is a package for python, which helps generate big volumes of fake data for a variety of purposes in a variety of languages.
  • json schema faker - (forks: 241) (stars: 2269) (watchers: 2269) - json-schema + fake data generators

Documentation

  • prmd - (forks: 175) (stars: 2037) (watchers: 2037) - json schema tools and doc generation for http apis
  • jsonschema2md - (forks: 94) (stars: 186) (watchers: 186) - convert complex json schemas into markdown documentation

Specifications

  • json schema spec - (forks: 171) (stars: 1847) (watchers: 1847) - the json schema i-d sources

Registry

  • schema registry - (forks: 736) (stars: 1234) (watchers: 1234) - confluent schema registry for kafka

Education

  • understanding json schema - (forks: 250) (stars: 1174) (watchers: 1174) - a website aiming to provide more accessible documentation for json schema.

Discovery

  • schemastore - (forks: 494) (stars: 865) (watchers: 865) - a collection of json schema files including full api

Generator

  • NJsonSchema - (forks: 300) (stars: 693) (watchers: 693) - json schema reader, generator and validator for .net
  • schema org - (forks: 86) (stars: 744) (watchers: 744) - a fluent builder schema.org types and ld+json generator
  • generate schema - (forks: 108) (stars: 705) (watchers: 705) - 🧞 convert json objects to mysql, json schema, mongoose, google bigquery, swagger, and more.
  • jsonschema - (forks: 93) (stars: 506) (watchers: 506) - generate json schemas from go types
  • schemapack - (forks: 31) (stars: 406) (watchers: 406) - create a schema object to encode/decode your json in to a compact byte buffer with no overhead.
  • jackson module jsonSchema - (forks: 122) (stars: 267) (watchers: 267) - module for generating json schema (v3) definitions from pojos
  • json_schema_generator - (forks: 57) (stars: 215) (watchers: 215) - a simple json schema generator from any json source

Parser

  • NJsonSchema - (forks: 300) (stars: 693) (watchers: 693) - json schema reader, generator and validator for .net

Query

  • Json Function - (forks: 23) (stars: 603) (watchers: 603) - it allows you to use methods such as schema, innerjoin, where, limit, select, orderby on json data.

Middleware

  • committee - (forks: 79) (stars: 568) (watchers: 568) - a collection of rack middleware to support json schema.

Resolvers

  • json schema ref parser - (forks: 113) (stars: 426) (watchers: 426) - parse, resolve, and dereference json schema $ref pointers in node and browsers

Converters

  • typson - (forks: 32) (stars: 289) (watchers: 289) - converts typescript to json-schema
  • enjoi - (forks: 52) (stars: 241) (watchers: 241) - converts a json schema to a joi schema.

Universal

  • piqi - (forks: 37) (stars: 228) (watchers: 228) - piqi – universal schema language: json, xml, protocol buffers data validation and conversion

It is interesting to see how forms is one of the top areas of investment, then of course validation. I am very interested in the long tail of query languages, registries, documentation and others. I still have a few more of these top API specification listings to do, and then I'll move on to better understand the long tail of what is being built, as well as where the opportunity and challenges lie in moving forward the API conversation at scale using open source tooling.