Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

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.


Package Description Version
shelf A model for web server middleware that encourages composition and easy reuse. pub package
shelf_packages_handler A shelf handler for serving a packages/ directory. pub package
shelf_proxy A shelf handler for proxying HTTP requests to another server. 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. pub package
shelf_router_generator A package:build-compatible builder for generating request routers for the shelf web-framework based on source annotations. pub package
shelf_static Static file server support for the shelf package and ecosystem. pub package
shelf_test_handler A Shelf handler that makes it easy to test HTTP interactions. pub package
shelf_web_socket A shelf handler that wires up a listener for every connection. pub package

Publishing automation

For information about our publishing automation and release process, see