Skip to content

team-alembic/iguazu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Iguazu

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.

How it works

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()
end

Development

The 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

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).

About

Explore data w/ a UI derived from your Ash resources

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors