An Object Relational Mapper for Elixir with a Postgres adapter, validations, and a composable query builder.
Atlas is an Object Relational Mapper (ORM) for the Elixir programming language, designed to provide a structured and flexible way to interact with databases. It follows the Repository pattern to decouple persistence logic from business logic, enabling robust data management and validation workflows. It currently supports PostgreSQL and includes features like schema definitions, a composable query builder, and built-in validations.
Elixir developers building applications that require structured database interactions with a focus on separation of concerns and data integrity. It is particularly suited for projects that benefit from the Repository pattern to manage multiple database connections and complex validation workflows.
Developers choose Atlas for its strict adherence to the Repository pattern, which cleanly separates persistence from business logic, and its flexible validation system with custom callback support. Its composable query builder and automatic generation of field accessors and finders reduce boilerplate code while maintaining clarity.
Object Relational Mapper for Elixir
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Cleanly separates persistence logic from business logic, enabling multiple database connections and validation workflows, as demonstrated in the persistence examples with different validator modules.
Supports built-in validators and custom callbacks, allowing complex data integrity checks like the Manager validator that enforces age restrictions beyond base model rules.
Provides a chainable interface for building queries, shown in examples where conditions and ordering can be combined, making code readable and reusable.
Automatically creates field accessors and `with_[field]` finder functions, reducing boilerplate, with the ability to override for custom behavior as in the email upcasing example.
Lacks essential ORM features like joins, relationships, and migrations, which are only on the roadmap, limiting its usefulness for advanced database operations.
Explicitly labeled as a work in progress, so API changes are likely, posing maintenance risks for projects that depend on stability.
Currently only supports PostgreSQL, with other adapters planned but not available, restricting flexibility in multi-database environments.
Requires defining Repo configuration for each environment manually in code, which can be tedious and error-prone compared to configuration file-based systems.