Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Elixir
  3. scrivener

scrivener

MITElixir

A pagination library for the Elixir ecosystem, primarily used to paginate Ecto queries.

GitHubGitHub
558 stars64 forks0 contributors

What is scrivener?

Scrivener is a pagination library for the Elixir ecosystem that provides a standardized way to handle pagination across different data sources. It defines a `Paginater` protocol to decouple pagination logic from specific implementations, though it's most commonly used with Ecto queries via the Scrivener.Ecto library. The library simplifies managing large datasets in Elixir applications by offering consistent pagination interfaces.

Target Audience

Elixir developers building web applications or APIs that require pagination, particularly those using Ecto for database interactions. It's also useful for library authors who want to add pagination support to their data structures.

Value Proposition

Developers choose Scrivener for its protocol-based design, which allows flexible pagination across various data types while maintaining consistency. Its ecosystem of companion libraries (like Scrivener.Ecto and Scrivener.HTML) provides ready-made solutions for common use cases, reducing boilerplate code.

Overview

Pagination for the Elixir ecosystem

Use Cases

Best For

  • Paginating Ecto queries in Phoenix applications
  • Adding pagination headers to REST APIs
  • Generating Bootstrap-compatible pagination HTML
  • Paginating in-memory lists in Elixir
  • Building reusable pagination components for Elixir libraries
  • Standardizing pagination logic across different data sources

Not Ideal For

  • Projects requiring active library maintenance and frequent feature updates
  • Applications using data sources not covered by the Paginater protocol, such as non-Ecto databases or external APIs
  • Simple use cases where basic limit/offset pagination suffices without the need for standardization

Pros & Cons

Pros

Protocol-Based Flexibility

Implements the Paginater protocol to decouple pagination logic, allowing consistent handling across various data types as emphasized in the README's philosophy.

Ecto Integration

Seamlessly paginates Ecto queries through the Scrivener.Ecto library, which is highlighted as the primary use case in the documentation.

Ecosystem of Extensions

Offers companion libraries like Scrivener.HTML for Bootstrap-compatible HTML and Scrivener.Headers for API metadata, providing ready-made solutions for common needs as listed in the related libraries section.

List Pagination Support

Enables pagination of standard Elixir lists with Scrivener.List, extending utility beyond database queries as mentioned in the key features.

Cons

Low Maintenance Status

The README explicitly states the library is in low maintenance mode, meaning only critical issues are addressed, which poses a risk for long-term project reliance.

Dependency on External Libraries

Full functionality requires installing separate libraries like Scrivener.Ecto and Scrivener.HTML, adding complexity to setup and dependency management beyond the core package.

Limited Protocol Implementations

If paginating custom data sources, developers must implement the Paginater protocol themselves, which can be time-consuming and error-prone compared to drop-in solutions.

Frequently Asked Questions

Quick Stats

Stars558
Forks64
Contributors0
Open Issues1
Last commit5 years ago
CreatedSince 2015

Tags

#database#api-pagination#elixir#ecto#paginate#pagination#backend#web-development#protocol

Built With

E
Elixir

Included in

Elixir13.1k
Auto-fetched 5 hours ago

Related Projects

plugplug

Compose web applications with functions

Stars3,007
Forks608
Last commit17 hours ago
surfacesurface

A server-side rendering component library for Phoenix

Stars2,136
Forks146
Last commit4 months ago
commandedcommanded

Use Commanded to build Elixir CQRS/ES applications

Stars2,018
Forks256
Last commit1 month ago
ex_adminex_admin

ExAdmin is an auto administration package for Elixir and the Phoenix Framework

Stars1,198
Forks265
Last commit6 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub