finds.dev

mojotech/scrivener_ecto

Paginate your Ecto queries with Scrivener

View on GitHub

★ 585ElixirMITupdated Nov 2024

// the take

Scrivener.Ecto bolts page-based pagination onto Ecto queries for Phoenix/Elixir apps — call Repo.paginate(query, params) and get back entries plus page_number, page_size, total_pages, and total_entries. It's aimed at anyone building a standard paginated list view (admin panels, API endpoints) on top of Postgres.

The API is minimal and idiomatic: it's a thin wrapper that returns a plain Ecto query result plus pagination metadata, so it composes with where/order_by/preload instead of fighting them. Defaults (page_size, params parsing from "page"/"page_size") cover the common Phoenix controller case with almost no boilerplate. Mature and stable — a decade-old, widely-used library means the behavior is well understood and unlikely to surprise you.

It's explicitly in low-maintenance mode — the author only triages PRs and breaking issues, so don't expect new features or fast turnaround on non-critical bugs. Only works with Ecto adapters that support subqueries, which in practice means Postgres; MySQL/SQLite users are out of luck. Offset-based pagination (COUNT + LIMIT/OFFSET) doesn't scale well on large tables — deep pages get slow and the total_entries count is a full table scan on every call, so there's no cursor-based option for high-volume datasets.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

search the same ground:

// at a glance

Stars
585
Forks
127
Language
Elixir
License
MIT
Last commit
14 Nov 2024

// nearby

If scrivener_ecto isn't quite it.

All repos →