webapp: Haskell web scaffolding using Scotty, WAI, and Warp

[ library, mit, web ] [ Propose Tags ]

See README.md


[Skip to Readme]
Versions [faq] 0.0.1, 0.0.2, 0.1.0, 0.1.1, 0.1.2, 0.2.0, 0.3.0, 0.3.1, 0.3.2, 0.3.3, 0.3.4, 0.3.5, 0.3.6, 0.4.0, 0.4.1, 0.5.0, 0.6.0, 0.6.1 (info)
Change log CHANGELOG.md
Dependencies attoparsec, base (>=4.8.0.0 && <=4.8.1.0), base16-bytestring, bcrypt, blaze-builder, bytestring, cryptohash, css-text, data-default, directory, filepath, fsnotify, hashtables, hjsmin, http-types, mime-types, mtl, network, optparse-applicative, scotty, stm, streaming-commons, text, time, transformers, unix, unordered-containers, wai, wai-extra, warp, warp-tls, webapp, zlib [details]
License MIT
Copyright (c) 2015 Nathaniel Symer
Author Nathaniel Symer <nate@symer.io>
Maintainer Nathaniel Symer <nate@symer.io>
Category Web
Home page https://github.com/fhsjaagshs/webapp
Bug tracker https://github.com/fhsjaagshs/webapp/issues
Source repo head: git clone git://github.com/fhsjaagshs/webapp.git
Uploaded by natesymer at Tue Dec 8 22:37:53 UTC 2015
Distributions NixOS:0.6.1
Executables example
Downloads 4223 total (166 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2016-11-29 [all 2 reports]

Modules

  • Web
    • Web.App
      • Web.App.Assets
      • Web.App.Cookie
      • Web.App.Daemon
      • Web.App.FileCache
      • Web.App.HTTP
      • Web.App.IO
      • Web.App.Monad
      • Web.App.Password

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for webapp-0.1.0

[back to package description]

webapp - simple webapp scaffolding with state

Basic example:

module Main where

import Web.App
import Web.Scotty.Trans

instance WebAppState Integer where
  initState = return 0
  destroyState st = do
    putStr "Counted: "
    print st

main = webappMain app "My Web App" "This is a demo web app"

app :: (ScottyError e) => ScottyT e (WebAppM Integer) ()
app = do
  get "/add" $ do
    modifyState (+1)
    
  get "/subtract" $ do
    (State count) <- getState
    putState (State count-1)
    
  get "/assets/:file" $ param "file" >>= loadAsset

There is also a module called FileCache which is available for loading cached files. It loads files into memory, MD5 sums them, compresses them, and then stores them in the cache.