Spectral - Type-driven JSON encoding/decoding, validation, and OpenAPI generation

Wow, had a quick look at estructura, nice work! Worth noting is that spectral doesn’t do coercion of integers that are encoded as strings in json. Eg, for the type:

@type my_int :: integer()

Spectral will return error for the value “1”, but will work for 1. There is currently no option to do such coercion, but it can be added.
{:error, …} = Spectral.decode(~s(“1”), MyModule, :my_int, :json)
{:ok, 1} = Spectral.decode(~s(1), MyModule, :my_int, :json)

Internally in spectra (the erlang library that does most of the heavy lifting), there is some support for property-based testing, but it is not ready for general use.

Apart from this I think we are aligned in features?