Difference between revisions of "Web/Frameworks"

From HaskellWiki
< Web
Jump to: navigation, search
(Rudimentary first iteration, more updates to come (need to merge all detail links into one line))
m (Web/Frameworks and Interfaces moved to Web/Frameworks)
(No difference)

Revision as of 16:41, 1 October 2010

Below is a list of Haskell web frameworks.


Happstack is a Haskell web framework. Happstack is designed so that developers can prototype quickly, deploy painlessly, scale massively, operate reliably, and change easily. It supports GNU/Linux, OS X, FreeBSD, and Windows environments.

Author: Happstack team, HAppS LLC

Maintainer: Happstack team <happs@googlegroups.com>

Announcement: http://www.haskell.org/pipermail/haskell-cafe/2010-May/078005.html

Home page: http://happstack.com/index.html

Documentation: http://happstack.com/docs

Package & repositories


Salvia is a feature rich modular web server and web application framework that can be used to write dynamic websites in Haskell. From the lower level protocol code up to the high level application code, everything is written as a Salvia handler. This approach makes the server extremely extensible. To see a demo of a Salvia website, please see the salvia-demo package.

All the low level protocol code can be found in the salvia-protocol package, which exposes the datatypes, parsers and pretty-printers for the URI, HTTP, Cookie and MIME protocols.

This Salvia package itself can be separated into three different parts: the interface, the handlers and the implementation. The interface module defines a number of type classes that the user can build the web application against. Reading the request object, writing to the response, or gaining direct access to the socket, all of these actions are reflected using one type class aspect in the interface. The handlers are self contained modules that implement a single aspect of the Salvia web server. The handlers expose their interface requirements in their type context. Salvia can have multiple implementations which can be switched by using different instances for the interface type classes. This package has only one implementation, a simple accepting socket loop server. The salvia-extras package has two additional implementations. Keeping a clear distinction between the abstract server aspects and the actual implementation makes it very easy to migrate existing web application to different back-ends.

License: BSD3

Author: Sebastiaan Visser

Maintainer: sfvisser@cs.uu.nl

Announcement: http://www.haskell.org/pipermail/haskell-cafe/2010-March/074870.html

Package & repositories


Snap is a simple web development framework for unix systems, written in the Haskell programming language.

Snap is well-documented and has a test suite with a high level of code coverage, but it is early-stage software with still-evolving interfaces. Snap is therefore likely to be most appropriate for early adopters and potential contributors.

  • A fast HTTP server library with an optional high-concurrency backend using the libev event loop library
  • A sensible and clean monad for web programming
  • An XML-based templating system for generating HTML

License: BSD3

Author: James Sanders, Gregory Collins, Doug Beardsley

Maintainer: snap@snapframework.com

Home page: http://snapframework.com/

Documentation: http://snapframework.com/docs

Package & repositories


Yesod is designed for RESTful, type-safe, performant web apps. By leveraging quasi-quotation for the more boilerplate tasks, we get concise web apps with high levels of type safety. Its Hamlet templates are compile-time checked for correctness, and the controller (web-routes-quasi) uses type-safe URLs to make certain you are only generating valid URLs. It loosely follows Model/View/Controller principles.

License: BSD3

Author: Michael Snoyman <michael@snoyman.com>

Maintainer: Michael Snoyman <michael@snoyman.com>

Announcement:: http://www.haskell.org/pipermail/haskell-cafe/2010-March/074271.html

Home page: http://www.yesodweb.com/

Documentation: http://docs.yesodweb.com/yesod/

Screencast: http://www.youtube.com/watch?v=BEWJnDgrmp0

Package & repositories