Crecto is an ORM written in Crystal which uses a Repository architectural pattern, where storage related concerns (the Repo) are separated from business concerns (the model).

Crecto was inspired by Ecto for the Elixir language. And while Elixir is a functional language, Crystal and Crecto are not. Models have mutable properties and are instances of Classes which inherit from Crecto::Model .

Crecto features multiple database connectors via Crecto::Repo , query building with Crecto::Query , transactions using Crecto::Multi , validations, database constraints, and more.

​