The Wheb package

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.



Wheb aims at providing a simple simple and straightforward web server.

 import           Web.Wheb
 import           Data.Text.Lazy (pack)

 main :: IO ()
 main = do
  opts <- generateOptions $ addGET (pack ".") rootPat $ (text (pack "Hi!"))
  runWhebServer (opts :: MinOpts)

Wheb makes it easy to share a global context and handle requests statefully

  import           Control.Concurrent.STM
  import           Control.Monad.IO.Class
  import           Data.Monoid
  import           Data.Text.Lazy (Text, pack)
  import           Web.Wheb

  data MyApp = MyApp Text (TVar Int)
  data MyHandlerData = MyHandlerData Int

  instance Default MyHandlerData where
    def = MyHandlerData 0

  counterMw :: MonadIO m => WhebMiddleware MyApp MyHandlerData m
  counterMw = do
    (MyApp _ ctr) <- getApp
    number <- liftIO $ readTVarIO ctr
    liftIO $ atomically $ writeTVar ctr (succ number)
    putReqState (MyHandlerData number)
    return Nothing

  homePage :: WhebHandler MyApp MyHandlerData
  homePage = do
    (MyApp appName _)       <- getApp
    (MyHandlerData num) <- getReqState
    html $ ("<h1>Welcome to" <> appName <>
            "</h1><h2>You are visitor #" <> (pack $ show num) <> "</h2>")

  main :: IO ()
  main = do
    opts <- generateOptions $ do
              startingCounter <- liftIO $ newTVarIO 0
              addWhebMiddleware counterMw
              addGET (pack ".") rootPat $ homePage
              return $ MyApp "AwesomeApp" startingCounter
    runWhebServer opts

Wheb allows you to write robust high concurrency web applications simply and effectively.


Change logNone available
Dependenciesbase (==4.6.*), blaze-builder (==0.3.*), bytestring (==0.10.*), case-insensitive (==1.0.*), conduit (==1.0.*), containers (==0.5.*), cookie (==0.4.*), data-default (==0.5.*), http-types (==0.8.*), mtl (==2.1.*), pwstore-fast (==2.4.*), stm (==2.4.*), text (==0.11.*), time (==1.4.*), transformers (==0.3.*), uuid (==1.3.*), wai (==2.0.*), wai-extra (==2.0.*), warp (==2.0.*) [details]
AuthorKyle Hanson
Home page
Source repositoryhead: git clone git://
UploadedThu Feb 6 20:57:34 UTC 2014 by hansonkd



Maintainers' corner

For package maintainers and hackage trustees