scotty: Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp

[ bsd3, library, web ] [ Propose Tags ]

A Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp.

{-# LANGUAGE OverloadedStrings #-}

import Web.Scotty

import Data.Monoid (mconcat)

main = scotty 3000 $
  get "/:word" $ do
    beam <- param "word"
    html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

Scotty is the cheap and cheerful way to write RESTful, declarative web applications.

  • A page is as simple as defining the verb, url pattern, and Text content.

  • It is template-language agnostic. Anything that returns a Text value will do.

  • Conforms to WAI Application interface.

  • Uses very fast Warp webserver by default.

As for the name: Sinatra + Warp = Scotty.

WAI
http://hackage.haskell.org/package/wai
Warp
http://hackage.haskell.org/package/warp

[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.1, 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.4.1, 0.4.2, 0.4.3, 0.4.4, 0.4.5, 0.4.6, 0.5.0, 0.6.0, 0.6.1, 0.6.2, 0.7.0, 0.7.1, 0.7.2, 0.7.3, 0.8.0, 0.8.1, 0.8.2, 0.9.0, 0.9.1, 0.10.0, 0.10.1, 0.10.2, 0.11.0, 0.11.1, 0.11.2, 0.11.3, 0.11.4, 0.11.5, 0.11.6, 0.12, 0.12.1 (info)
Change log changelog.md
Dependencies aeson (>=0.6.2.1 && <2.2), base (>=4.6 && <5), base-compat-batteries (>=0.10 && <0.13), blaze-builder (>=0.3.3.0 && <0.5), bytestring (>=0.10.0.2 && <0.12), case-insensitive (>=1.0.0.1 && <1.3), data-default-class (>=0.0.1 && <0.2), exceptions (>=0.7 && <0.11), fail, http-types (>=0.9.1 && <0.13), monad-control (>=1.0.0.3 && <1.1), mtl (>=2.1.2 && <2.4), nats (>=0.1 && <2), network (>=2.6.0.2 && <3.2), regex-compat (>=0.95.1 && <0.96), text (>=0.11.3.1 && <2.1), transformers (>=0.3.0.0 && <0.7), transformers-base (>=0.4.1 && <0.5), transformers-compat (>=0.4 && <0.8), wai (>=3.0.0 && <3.3), wai-extra (>=3.0.0 && <3.2), warp (>=3.0.13 && <3.4) [details]
License BSD-3-Clause
Copyright (c) 2012-Present Andrew Farmer
Author Andrew Farmer <xichekolas@gmail.com>
Maintainer Andrew Farmer <xichekolas@gmail.com>
Category Web
Home page https://github.com/scotty-web/scotty
Bug tracker https://github.com/scotty-web/scotty/issues
Source repo head: git clone git://github.com/scotty-web/scotty.git
Uploaded by danielbrice at 2022-11-17T23:40:10Z
Distributions Arch:0.12.1, Debian:0.11.6, Fedora:0.12, LTSHaskell:0.12.1, NixOS:0.12.1, Stackage:0.12.1
Reverse Dependencies 59 direct, 39 indirect [details]
Downloads 58679 total (212 in the last 30 days)
Rating 2.5 (votes: 4) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2022-11-18 [all 1 reports]

Readme for scotty-0.12.1

[back to package description]

Scotty Build Status

A Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp.

{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty

import Data.Monoid (mconcat)

main = scotty 3000 $
    get "/:word" $ do
        beam <- param "word"
        html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]

Scotty is the cheap and cheerful way to write RESTful, declarative web applications.

  • A page is as simple as defining the verb, URL pattern, and Text content.
  • It is template-language agnostic. Anything that returns a Text value will do.
  • Conforms to the web application interface (WAI).
  • Uses the very fast Warp webserver by default.

See examples/basic.hs to see Scotty in action. (basic.hs needs the wai-extra package)

> runghc examples/basic.hs
Setting phasers to stun... (port 3000) (ctrl-c to quit)
(visit localhost:3000/somepath)

As for the name: Sinatra + Warp = Scotty.

More Information

Tutorials and related projects can be found in the Scotty wiki.

Development & Support

Open an issue on GitHub.

Copyright (c) 2012-2019 Andrew Farmer

FAQ

  • Fails to compile regex-posix on Windows
    • If you are using stack, add the following parameters to stack.yaml:
      •   extra-deps:
          - regex-posix-clib-2.7
          flags:
            regex-posix:
              _regex-posix-clib: true
        
    • If you are using cabal, update the constraints section of cabal.project.local as follows:
      • constraints:
          regex-posix +_regex-posix-clib