CRUD applications share a remarkably consistent shape and so do our GUIs; Can we do better than generators, DB clients, and even totally custom GUIs some day?
Iguazu is an Ash extension that generates a carousel-style UI for exploring your data. You annotate your Ash domains and resources with a minimal DSL, and Iguazu produces a fully navigable Phoenix LiveView interface.
Iguazu provides two Spark DSL extensions:
Iguazu— applied to an Ash domain to opt it into the explorer and set a display title.Iguazu.Resource— applied to individual resources to control attribute labels, section dividers, relationship labels, and custom list-item formatting.
A single macro call in your router wires up the LiveView routes:
# In your router
use Iguazu.Router
scope "/" do
pipe_through :browser
iguazu_routes()
endThe main Elixir project at the repository root is the library itself — the
DSL extensions, LiveView components, and router helpers that make up the
iguazu package.
The demo/ directory holds standalone Phoenix applications that exercise
Iguazu against real data. Each demo is a fully self-contained Mix project
that depends on the library via a path dependency ({:iguazu, path: "../.."}).
Every demo runs its own Postgres instance via Docker Compose and its own Phoenix endpoint, each on a distinct port so they can all run simultaneously:
| Demo | Dataset | Postgres port | Phoenix port |
|---|---|---|---|
demo/pagila |
Pagila — films, actors, categories, stores | 5433 | 4100 |
demo/imdb |
IMDb Non-Commercial Datasets — titles, names, ratings | 5434 | 4200 |
demo/stack_overflow |
Stack Exchange Data Dump — posts, users, tags | 5435 | 4300 |
demo/yelp |
Yelp Open Dataset — businesses, reviews, users | 5436 | 4400 |
The steps to run any demo are the same:
cd demo/<name>
docker compose up -d # starts Postgres on the port shown above
mix setup # deps, migrations, seed data
mix phx.server # visit http://localhost:<port>Some datasets require a manual download step before mix setup — see the
README inside each demo directory for details.
demo/pagila is the primary test-bed and the only demo whose seed data
is fully automated (no external download required).