Search packages, repositories and app categories

Package detailsv1.4.3

shelf

A model for web server middleware that encourages composition and easy reuse.

AndroidiOSWebmacOSWindowsLinux
30-day downloads
13.2M
Likes
1K
Pub points
160

Install package

flutter pub add shelf

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Shelf is a Dart package that provides a lightweight, modular framework for building web servers and middleware. It emphasizes composability, allowing developers to create flexible and reusable server logic through a simple, functional API. Middleware components can be chained together to handle requests and responses efficiently, making it ideal for both small services and complex backend systems. Designed with simplicity and interoperability in mind, Shelf integrates seamlessly with Dart's ecosystem and supports multiple platforms including web, mobile, and desktop.

Use cases

  • Building REST APIs
  • Creating custom web servers
  • Implementing request/response middleware
  • Developing microservices
  • Handling HTTP routing and authentication

Key features

  • Modular middleware architecture
  • Easy-to-compose request handlers
  • Cross-platform support
  • Lightweight and minimal overhead
  • Built-in support for streaming and async operations

Suitable for

  • Backend developers
  • API creators
  • Dart-based web service builders
  • Microservice architects
  • Learning HTTP server concepts

Considerations

  • Not a full web framework (requires additional packages for routing)
  • Limited built-in features compared to larger frameworks
  • Manual setup required for advanced functionality

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

Build Status

About Shelf

Shelf makes it easy to create and compose web servers and parts of web servers. How?

  • Expose a small set of simple types.
  • Map server logic into a simple function: a single argument for the request, the response is the return value.
  • Trivially mix and match synchronous and asynchronous processing.
  • Flexibility to return a simple string or a byte stream with the same model.

It was inspired by Connect for NodeJS and Rack for Ruby.

See the package:shelf readme for more information.

Packages

Package Description Issues Version
shelf A model for web server middleware that encourages composition and easy reuse. issues pub package
shelf_packages_handler A shelf handler for serving a packages/ directory. issues pub package
shelf_proxy A shelf handler for proxying HTTP requests to another server. issues pub package
shelf_router A convenient request router for the shelf web-framework, with support for URL-parameters, nested routers and routers generated from source annotations. issues pub package
shelf_router_generator A package:build-compatible builder for generating request routers for the shelf web-framework based on source annotations. issues pub package
shelf_static Static file server support for the shelf package and ecosystem. issues pub package
shelf_test_handler A Shelf handler that makes it easy to test HTTP interactions. issues pub package
shelf_web_socket A shelf handler that wires up a listener for every connection. issues pub package
_shelf_compliance HTTP/1.1 compliance and hardening tests. issues (not published)

Publishing automation

For information about our publishing automation and release process, see https://github.com/dart-lang/ecosystem/wiki/Publishing-automation.

Categories

Dependencies

Dependency list 6 items

Source repository

Projects using this package

Rankings