Skip to main content

Deno reading an opinionated book


Fast, minimalist web framework for Deno ported from ExpressJS.

Current version Current test status Deno docs PRs are welcome Opine issues Opine stars Opine forks Opine license Opine is maintained Opine repository visit count

Table of Contents

Getting Started

import opine from "";

const app = opine();

app.use((req, res) => {
  res.send("Hello World");



This is a Deno module available to import direct from this repo and via the Deno Registry.

Before importing, download and install Deno.

You can then import Opine straight into your project:

import opine from "";

If you want to use a specific version of Opine, just modify the import url to contain the version:

import opine from "";

Or if you want to use a specific commit of Opine, just modify the import url to contain the commit hash:

import opine from "";


  • Robust routing
  • Focus on high performance
  • Large selection of HTTP helpers including support for downloading / sending files, etags, Content-Disposition, cookies, JSONP etc.
  • Support for static serving of assets
  • View system supporting template engines
  • Content negotiation
  • Compatible with SuperDeno for easy server testing
  • Supports HTTP proxy middleware with opine-http-proxy

And more to come as we achieve feature parity with ExpressJS.



The Express philosophy is to provide small, robust tooling for HTTP servers, making it a great solution for single page applications, web sites, hybrids, or public HTTP APIs.

Opine will aim to achieve these same great goals, focussing first on developing robust tooling and features before moving onto accelerating performance and becoming super lightweight.

As time passes, Opine’s goals may naturally diverge from ExpressJS and this will be reflected here.


To run the examples, you have two choices:

  1. Run the example using Deno directly from GitHub, for example:

    deno run --allow-net --allow-read
  2. Clone the Opine repo locally:

    git clone git:// --depth 1
    cd opine

    Then run the example you want:

    deno --allow-net --allow-read ./example/hello-world/index.ts

All the examples contain example commands in their READMEs to help get you started for either of the above methods.


Contributing guide


There are several third party modules that have been ported into this module. Each third party module has maintained it’s license and copyrights. The only exception is for Express, from which this entire module has been ported, whose license and copyrights are available at EXPRESS_LICENSE in the root of this repository, and cover all files within the source directory which not been explicitly licensed otherwise.

All modules adapted into this module are licensed under the MIT License.

Opine is licensed under the MIT License.

Icon designed and created by Hannah Morten.