A list of awesome Ash libraries, DSLs and Resources.
The Elixir backend framework for unparalleled productivity. Declarative tools that let you stop wasting time. Use with Phoenix LiveView or build APIs in minutes for your front-end of choice.
- Ash - A declarative, resource-based framework for building Elixir applications.
- AshPostgres - A postgres data layer for Ash Framework.
- AshGraphql - The extension for building GraphQL APIs with Ash.
- AshJsonApi - The JSON:API support for Ash Framework resources.
- AshAi - Structured outputs, vectorization and tool calling for your Ash application.
- AshPhoenix - Utilities for using Ash with Phoenix.
- AshAuthentication - Authentication extension for the Ash Framework.
- Reactor - An asynchronous, graph-based execution engine.
- AshAdmin - A super-admin UI for Ash Framework, built with Phoenix LiveView.
- AshPaperTrail - The extension for keeping an audit log of changes to your Ash resources.
- AshOban - The extension for integrating Ash resources with Oban.
- AshEvents - An event-architecture extension for Ash.
- AshStateMachine - The extension for building state machines with Ash resources.
- AshArchival - An Ash extension to implement archival (soft deletion) for resources.
- AshCloak - An Ash extension to seamlessly encrypt and decrypt resource attributes.
- AshSqlite - An SQLite data layer for Ash Framework.
- AshSync - Real-time sync for Postgres-backed Ash & Phoenix applications.
- AshDoubleEntry - A customizable double entry bookkeeping system backed by Ash resources.
- AshCsv - A CSV data layer for Ash Framework.
- OpentelemetryAsh - The Open Telemetry integration for Ash Framework.
- AshBlog - A Blog data layer backed by markdown files.
- AshMoney - The extension for working with money types in Ash.
- AshAppsignal - The AppSignal APM integration for Ash Framework.
- AshOps - An Ash extension which generates mix tasks for actions.
- AshGeo - Tools for using Geo, Topo and PostGIS with Ash.
- AshTrans - An Ash extension that provides translations to a resource.
- AshRateLimiter - Rate limiting for Ash actions.
-
domain - General domain configuration.
-
resources - List the resources of this domain.
- resource - A resource present in the domain.
- define - Defines a function with the corresponding name and arguments.
- define_calculation - Defines a function with the corresponding name and arguments, that evaluates a calculation.
-
execution - Options for how requests are executed using this domain.
-
authorization - Options for how requests are authorized using this domain.
-
attributes - A section for declaring attributes on the resource.
- attribute - Declares an attribute on the resource.
- create_timestamp - Declares a non-writable attribute with a create default of
&DateTime.utc_now/0. - update_timestamp - Declares a non-writable attribute with a create and update default of
&DateTime.utc_now/0. - integer_primary_key - Declares a generated, non writable, non-nil, primary key column of type integer.
- uuid_primary_key - Declares a non writable, non-nil, primary key column of type
uuid, which defaults toAsh.UUID.generate/0. - uuid_v7_primary_key - Declares a non writable, non-nil, primary key column of type
uuid_v7, which defaults toAsh.UUIDv7.generate/0.
-
relationships - A section for declaring relationships on the resource.
- has_one - Declares a
has_onerelationship. In a relational database, the foreign key would be on the other table. - has_many - Declares a
has_manyrelationship. There can be any number of related entities. - many_to_many - Declares a
many_to_manyrelationship. Many to many relationships require a join resource. - belongs_to - Declares a
belongs_torelationship. In a relational database, the foreign key would be on the source table.
- has_one - Declares a
-
actions - A section for declaring resource actions.
- action - Declares a generic action. A combination of arguments, a return type and a run function.
- create - Declares a
createaction. For calling this action, see theAsh.Domaindocumentation. - read - Declares a
readaction. For calling this action, see theAsh.Domaindocumentation. - update - Declares a
updateaction. For calling this action, see theAsh.Domaindocumentation. - destroy - Declares a
destroyaction. For calling this action, see theAsh.Domaindocumentation.
-
code_interface - Functions that will be defined on the resource.
- define - Defines a function with the corresponding name and arguments.
- define_calculation - Defines a function that evaluates a calculation.
-
resource - General resource configuration.
-
identities - Unique identifiers for the resource.
- identity - Represents a unique constraint on the resource.
-
changes - Declare changes that occur on create/update/destroy actions
- change - A change to be applied to the changeset.
-
preparations - Declare preparations for read actions.
- prepare - Declares a preparation for queries.
-
validations - Declare validations prior to performing actions against the resource.
- validate - Declares a validation for creates and updates.
-
aggregates - Declare named aggregates on the resource.
- count - Declares a count aggregate.
- exists - Declares an exists aggregate.
- first - Gets first matching value.
- sum - Sums values.
- list - Gets list of values.
- max - Gets maximum value.
- min - Gets minimum value.
- avg - Calculates average.
- custom - Custom aggregate implementation.
-
calculations - Declare named calculations.
- calculate - Declares a calculation.
-
multitenancy - Configure multitenancy behavior.
- postgres - Postgres data layer configuration.
- custom_indexes - A section for configuring indexes to be created by the migration generator.
- custom_statements - A section for configuring custom statements to be added to migrations.
- manage_tenant - Configuration for the behavior of a resource that manages a tenant.
- references - A section for configuring the references (foreign keys) in resource migrations.
- check_constraints - A section for configuring the check constraints for a given table.
- graphql - Domain level configuration for GraphQL.
- queries - Queries to expose for the resource.
- mutations - Mutations (create/update/destroy actions) to expose for the resource.
- subscriptions - Subscriptions to expose for the resource.
- graphql - Configuration for a given resource in graphql.
- queries - Queries (read actions) to expose for the resource.
- mutations - Mutations (create/update/destroy actions) to expose for the resource.
- subscriptions - Subscriptions (notifications) to expose for the resource.
- managed_relationships - Generates input objects for
manage_relationshiparguments on resource actions.
Please refer to the guidelines at contributing.md for details.