finds.dev← search

// the find

ash-project/ash

★ 2,509 · Elixir · updated Sep 2026

A declarative, extensible framework for building Elixir applications.

Ash is a declarative, DSL-driven framework for modeling resources, actions, and authorization in Elixir, built on top of Spark. It's aimed at Phoenix/Elixir teams who want a Rails-like batteries-included layer for data modeling, APIs, and auth instead of hand-wiring Ecto schemas and contexts.

The ecosystem is unusually deep for a framework this size — AshPostgres, AshGraphql, AshJsonApi, AshAuthentication, AshOban, AshAdmin all ship as first-party extensions rather than being left to the community, so a typical CRUD-plus-auth-plus-API app needs very little glue code. Authorization is baked directly into the resource layer via a policy DSL and SAT solver, not bolted on as a separate concern, which avoids the usual drift between model and permission logic. Docs are organized Diataxis-style (tutorial/topics/how-to/reference) and the reference docs are generated straight from the DSL source, so they don't rot the way hand-written framework docs usually do.

Everything runs through Spark's macro/DSL system at compile time, so error messages and stack traces are often several layers removed from the actual mistake — the learning curve versus plain Ecto is real and the docs even include a dedicated 'working with LLMs' guide, which is a tell. Compile times scale with resource count since the DSL is fully expanded at compile time, which becomes noticeable in larger codebases. Adopting Ash means buying into its conventions fairly deeply; deviating (custom data layers, unusual action patterns) requires understanding Spark internals, not just Ash's public API. The talent pool is small — this is an Elixir-only, Ash-specific skill set, so hiring or getting outside help is harder than for an Ecto/Phoenix-only stack.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →