An ActiveRecord pattern ORM for Crystal with a flexible query DSL, validations, relationships, and migrations.
Jennifer is an Object-Relational Mapper (ORM) for the Crystal programming language that implements the ActiveRecord pattern. It provides a comprehensive suite of tools for database interaction, including a flexible query DSL, model validations, relationship definitions, and a migration system. It solves the problem of managing database operations in Crystal applications by offering a type-safe, productive abstraction over SQL.
Crystal developers building database-driven applications who prefer an ActiveRecord-style ORM with strong querying capabilities and built-in features like migrations and validations.
Developers choose Jennifer for its full-featured, ActiveRecord-like implementation in Crystal, its powerful and flexible query DSL that supports complex SQL operations, and its integrated tooling for migrations, validations, and internationalization, all while leveraging Crystal's performance and type safety.
Crystal ORM using ActiveRecord pattern with flexible query DSL
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Supports complex SQL operations like joins, CTEs, and JSON operators through a domain-specific language, enabling expressive and type-safe database queries as detailed in the README.
Includes ActiveRecord-style relationships (e.g., polymorphic associations), validations, callbacks, and scopes, providing a full-featured model layer out of the box.
Offers a built-in mechanism using Sam CLI for managing database schema changes, simplifying version control and deployment workflows.
Leverages i18n.cr for configurable error messages and model translations, aiding in multi-language applications without extra dependencies.
Explicitly does not support MySQL 8.0.36 and above, restricting compatibility with newer MySQL releases and potentially forcing database downgrades.
Under heavy development with frequent breaking changes per the versioning policy, making it risky for long-term projects without close monitoring of updates.
Requires external database drivers (e.g., crystal-mysql or crystal-pg) and specific configuration, adding setup overhead and potential version conflicts.