A simple schema/attributes library built on top of modern JavaScript

Structure provides a simple interface which allows you to add attributes to your ES6 classes based on a schema, with validations and type coercion.

Use cases

You can use Structure for a lot of different cases, including:

Domain entities and value objects

Model business rules

Validation and coercion of request data

Map pure objects and JSON to your application classes

Add attributes to classes that you can't change the class hierarchy

What Structure is not:

It's not a database abstraction

It's not a Model of a MVC framework

It's not an attempt to simulate classic inheritance in JavaScript

Example usage

For each attribute on your schema, a getter and a setter will be created into the given class. It'll also auto-assign those attributes passed to the constructor.