Difference between revisions of "Web/Frameworks"

From HaskellWiki
< Web
Jump to navigation Jump to search
m (Adding info box)
(Use tables)
Line 10: Line 10:
 
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.
 
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.
   
  +
{| class="wikitable"
'''Author:''' Happstack team, HAppS LLC
 
  +
! Author:
 
'''Maintainer:''' Happstack team <happs@googlegroups.com>
+
| Happstack team, HAppS LLC
  +
|-
 
  +
! Maintainer:
'''Home page:''' http://happstack.com/index.html
 
  +
| Happstack team <happs@googlegroups.com>
 
  +
|-
'''Documentation:''' http://happstack.com/docs
 
  +
! Home page:
 
  +
| http://happstack.com/index.html
'''Package & repositories'''
 
  +
|-
 
  +
! Documentation:
* Hackage: http://hackage.haskell.org/package/happstack
 
* Darcs: http://patch-tag.com/r/mae/happstack/pullrepo
+
| http://happstack.com/docs
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/happstack Hackage] - [http://patch-tag.com/r/mae/happstack/pullrepo Darcs]
  +
|}
   
 
== Haskell on a Horse ==
 
== Haskell on a Horse ==
Line 27: Line 31:
 
Haskell on a Horse (HoH) is a combinatorial web framework for the programming language Haskell. It is currently at an early, unsettled stage of development. It is available under the "BSD3" open-source license.
 
Haskell on a Horse (HoH) is a combinatorial web framework for the programming language Haskell. It is currently at an early, unsettled stage of development. It is available under the "BSD3" open-source license.
   
  +
{| class="wikitable"
'''License''' BSD3
 
  +
! License
 
  +
| BSD3
'''Author''' Jason Hart Priestley
 
  +
|-
 
  +
! Author
'''Maintainer''' jason@on-a-horse.org
 
  +
| Jason Hart Priestley
 
  +
|-
'''Home page:''' http://haskell.on-a-horse.org/
 
  +
! Maintainer
 
  +
| jason@on-a-horse.org
'''Package & repositories'''
 
  +
|-
 
  +
! Home page:
* Hackage: http://hackage.haskell.org/package/on-a-horse
 
  +
| http://haskell.on-a-horse.org/
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/on-a-horse Hackage]
  +
|}
   
 
== loli ==
 
== loli ==
Line 43: Line 52:
 
A simple library for fast web prototyping in Haskell.
 
A simple library for fast web prototyping in Haskell.
   
  +
{| class="wikitable"
'''License''' BSD3
 
  +
! License
 
  +
| BSD3
'''Author''' Wang, Jinjing
 
  +
|-
 
  +
! Author
'''Maintainer''' Wang, Jinjing <nfjinjing@gmail.com>
 
  +
| Wang, Jinjing
 
  +
|-
'''Package & repositories'''
 
  +
! Maintainer
 
  +
| Wang, Jinjing <nfjinjing@gmail.com>
* Hackage: http://hackage.haskell.org/package/loli
 
  +
|-
* Github: http://github.com/nfjinjing/loli
 
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/loli Hackage] - [http://github.com/nfjinjing/loli Github]
  +
|}
   
 
== Lemmachine ==
 
== Lemmachine ==
Line 62: Line 74:
 
[http://github.com/larrytheliquid/Lemmachine#readme More information]
 
[http://github.com/larrytheliquid/Lemmachine#readme More information]
   
  +
{| class="wikitable"
'''Author''': Larry Diehl
 
  +
! Author
 
  +
| Larry Diehl
'''Packages & repositories'''
 
  +
|-
 
  +
! Packages & repositories
Github: http://github.com/larrytheliquid/Lemmachine
 
  +
| [http://github.com/larrytheliquid/Lemmachine Github]
  +
|}
   
 
== Salvia ==
 
== Salvia ==
Line 76: Line 90:
 
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.
 
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.
   
  +
{| class="wikitable"
'''License:''' BSD3
 
  +
! License:
 
  +
| BSD3
'''Author:''' Sebastiaan Visser
 
  +
|-
 
  +
! Author:
'''Maintainer:''' sfvisser@cs.uu.nl
 
  +
| Sebastiaan Visser
 
  +
|-
'''Announcement:''' http://www.haskell.org/pipermail/haskell-cafe/2010-March/074870.html
 
  +
! Maintainer:
 
  +
| sfvisser@cs.uu.nl
'''Package & repositories'''
 
  +
|-
 
  +
! Announcement:
* Hackage: http://hackage.haskell.org/package/salvia
 
  +
| http://www.haskell.org/pipermail/haskell-cafe/2010-March/074870.html
* Git: http://github.com/sebastiaanvisser/salvia
 
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/salvia Hackage] - [http://github.com/sebastiaanvisser/salvia Git]
  +
|}
   
 
== Snap ==
 
== Snap ==
Line 99: Line 117:
 
* An XML-based templating system for generating HTML
 
* An XML-based templating system for generating HTML
   
  +
{| class="wikitable"
'''License:''' BSD3
 
  +
! License:
 
  +
| BSD3
'''Author:''' James Sanders, Gregory Collins, Doug Beardsley
 
  +
|-
 
  +
! Author:
'''Maintainer:''' snap@snapframework.com
 
  +
| James Sanders, Gregory Collins, Doug Beardsley
 
  +
|-
'''Home page:''' http://snapframework.com/
 
  +
! Maintainer:
 
'''Documentation:''' http://snapframework.com/docs
+
| snap@snapframework.com
  +
|-
 
  +
! Home page:
'''Package & repositories'''
 
  +
| http://snapframework.com/
 
  +
|-
* Hackage: http://hackage.haskell.org/package/snap-server
 
  +
! Documentation:
* Git: http://git.snapframework.com/snap-server.git
 
  +
| http://snapframework.com/docs
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/snap-server Hackage] - [http://git.snapframework.com/snap-server.git Git]
  +
|}
   
 
== Turbinado ==
 
== Turbinado ==
Line 124: Line 147:
 
* A rich set of tags to make designing pages simpler;.
 
* A rich set of tags to make designing pages simpler;.
   
  +
{| class="wikitable"
'''Author:''' Alson Kemp
 
  +
! Author:
 
  +
| Alson Kemp
'''Package & repositories:'''
 
  +
|-
 
  +
! Package & repositories:
* Github: http://github.com/alsonkemp/turbinado
 
  +
| [http://github.com/alsonkemp/turbinado Github]
  +
|}
   
 
== Yesod ==
 
== Yesod ==
Line 134: Line 159:
 
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.
 
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.
   
  +
{| class="wikitable"
'''License:''' BSD3
 
  +
! License:
 
  +
| BSD3
'''Author:''' Michael Snoyman <michael@snoyman.com>
 
  +
|-
 
  +
! Author:
'''Maintainer:''' Michael Snoyman <michael@snoyman.com>
 
  +
| Michael Snoyman <michael@snoyman.com>
 
  +
|-
'''Announcement:''': http://www.haskell.org/pipermail/haskell-cafe/2010-March/074271.html
 
  +
! Maintainer:
 
  +
| Michael Snoyman <michael@snoyman.com>
'''Home page:''' http://www.yesodweb.com/
 
  +
|-
 
  +
! Announcement:
'''Documentation:''' http://docs.yesodweb.com/yesod/
 
  +
| : http://www.haskell.org/pipermail/haskell-cafe/2010-March/074271.html
 
  +
|-
'''Screencast:''' http://www.youtube.com/watch?v=BEWJnDgrmp0
 
  +
! Home page:
 
  +
| http://www.yesodweb.com/
'''Package & repositories'''
 
  +
|-
 
  +
! Documentation:
* Hackage: http://hackage.haskell.org/package/yesod
 
* Github: http://github.com/snoyberg/yesod
+
| http://docs.yesodweb.com/yesod/
  +
|-
  +
! Screencast:
  +
| http://www.youtube.com/watch?v=BEWJnDgrmp0
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/yesod Hackage] - [http://github.com/snoyberg/yesod Github]
  +
|}

Revision as of 00:37, 4 October 2010

Haskell Web Development

Software:
Servers - Libraries - Frameworks
Deploy - Cloud
Interfaces to frameworks
Databases and Persistence
Testing and Verification
Content Management

Community & Research:
Forums and Discussion
Literature (research, talks and blogs)
Existing Haskell web applications
Ongoing projects and ideas

Below is a list of known to be active Haskell web frameworks.

See also: Inactive web frameworks

Happstack

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>
Home page: http://happstack.com/index.html
Documentation: http://happstack.com/docs
Package & repositories Hackage - Darcs

Haskell on a Horse

Haskell on a Horse (HoH) is a combinatorial web framework for the programming language Haskell. It is currently at an early, unsettled stage of development. It is available under the "BSD3" open-source license.

License BSD3
Author Jason Hart Priestley
Maintainer jason@on-a-horse.org
Home page: http://haskell.on-a-horse.org/
Package & repositories Hackage

loli

A simple library for fast web prototyping in Haskell.

License BSD3
Author Wang, Jinjing
Maintainer Wang, Jinjing <nfjinjing@gmail.com>
Package & repositories Hackage - Github

Lemmachine

Lemmachine is a REST'ful web framework that makes it easy to get HTTP right by exposing users to overridable hooks with sane defaults. The main architecture is a copy of Erlang-based Webmachine, which is currently the best documentation reference (for hooks & general design).

Lemmachine stands out from the dynamically typed Webmachine by being written in dependently typed Agda. The goal of the project is to show the advantages gained from compositional testing by taking advantage of proofs being inherently compositional. See proofs for examples of universally quantified proofs (tests over all possible input values) written against the default resource, which does not override any hooks.

More information

Author Larry Diehl
Packages & repositories Github

Salvia

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 Hackage - Git

Snap

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 Hackage - Git

Turbinado

Turbinado is a Rails-ish MVC web framework for Haskell. Turbinado gives you all of the benefits of coding in Haskell and adds: http://www.cin.ufpe.br/~haskell/hwsproxygen/

  • A fast HTTP server with static- and dynamic-content serving capabilities;
  • Views built using HTML, HAML or Haskell templating syntax;
  • Automagic recompilation of Controllers, Layouts and Views;
  • A database ORM to make database interaction (especially with PostgreSQL) joyful;
  • A rich set of tags to make designing pages simpler;.
Author: Alson Kemp
Package & repositories: Github

Yesod

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 Hackage - Github