Web/Frameworks: Difference between revisions
(Fix Happstack documentation link) |
(Removed inactive Frameworks (adding to inactive list)) |
||
Line 119: | Line 119: | ||
You can see a [https://github.com/yesodweb/yesod/wiki/Powered-by-Yesod list of Yesod-powered sites and packages], or check out the [https://github.com/snoyberg/haskellers source code for Haskellers]. Most discussions for Yesod take place on the [http://groups.google.com/group/yesodweb yesodweb list], so feel free to join in and ask any questions you have, the Yesod community is very beginner-friendly. | You can see a [https://github.com/yesodweb/yesod/wiki/Powered-by-Yesod list of Yesod-powered sites and packages], or check out the [https://github.com/snoyberg/haskellers source code for Haskellers]. Most discussions for Yesod take place on the [http://groups.google.com/group/yesodweb yesodweb list], so feel free to join in and ask any questions you have, the Yesod community is very beginner-friendly. | ||
== mohws == | == mohws == | ||
Line 173: | Line 139: | ||
!Packages & repositories | !Packages & repositories | ||
|[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mohws Hackage] - [http://code.haskell.org/mohws/ Darcs] | |[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mohws Hackage] - [http://code.haskell.org/mohws/ Darcs] | ||
|} | |} | ||
Line 252: | Line 193: | ||
| [http://hackage.haskell.org/package/miso Hackage] - [https://github.com/dmjio/miso Git] | | [http://hackage.haskell.org/package/miso Hackage] - [https://github.com/dmjio/miso Git] | ||
|} | |} | ||
== Servant == | == Servant == | ||
Line 274: | Line 214: | ||
! Package & repositories | ! Package & repositories | ||
| [http://hackage.haskell.org/package/servant Hackage] - [https://github.com/haskell-servant Git] | | [http://hackage.haskell.org/package/servant Hackage] - [https://github.com/haskell-servant Git] | ||
|} | |} | ||
Line 356: | Line 243: | ||
! Package & repositories | ! Package & repositories | ||
| [http://hackage.haskell.org/package/Spock Hackage] - [https://github.com/agrafix/Spock Git] | | [http://hackage.haskell.org/package/Spock Hackage] - [https://github.com/agrafix/Spock Git] | ||
|} | |} | ||
Revision as of 07:29, 27 August 2020
Content from Web should be merged here.
Below is a list of known to be active Haskell web frameworks. Rather than one framework to rule them all, Haskell provides several options. You can view the Web/Deploy page to get an idea of how you might deploy an application written in some of these frameworks.
See also: there are also many inactive web frameworks to draw inspiration from
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.
License | BSD3 |
---|---|
Author: | Happstack team, HAppS LLC |
Maintainer: | Happstack team <happs@googlegroups.com> |
Home page: | http://happstack.com/ |
Documentation: | http://happstack.com/page/view-page-slug/3/documentation |
Package & repositories | Hackage - Darcs |
Happstack is a complete web framework. The main component is happstack-server: an integrated HTTP server, routing combinators, fileserving, etc. In addition, a number of packages that used to be coupled to Happstack have now been decoupled from it, but remain promoted and documented for use with Happstack:
- safecopy: datatype serialization and migration support
- acid-state: a powerful NoSQL ACID storage system with native support for Haskell types
It also includes integration with many 3rd party libraries including:
- templating: Blaze HTML, Hamlet, HSP, HStringTemplate, Heist, and more
- forms: reform
- routing: web-routes type-safe urls and routing
- databases: can be used with most Database interfaces with no special support required
See the Happstack Home Page for more information and to learn how to get support via IRC and mailing lists.
Snap
Snap is a web development framework built around an abstraction called snaplets.
Snap is well-documented and has a test suite with a high level of code coverage. It has been used in production for years, and version 1.0 was released in August 2016. As of July 2017, it does not support HTTP/2.
The framework provides:
- A fast HTTP server library
- A sensible and clean monad for web programming
- A simple, yet powerful template system that supports both HTML5 and XML
Snaplets that come with the framework include functionality for templating, authentication and sessions. Additional functionality (including MySQL and PostgreSQL database access) is provided by third-party snaplets.
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 |
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://www.yesodweb.com/book |
Screencast: | http://www.yesodweb.com/page/screencasts |
Package & repositories | Hackage - Github |
Yesod is a full-featured web framework. It takes a modular approach to development, so many parts of the framework such as Hamlet and Persistent are available as standalone packages. However, put together, Yesod provides you with solutions for templating, routing, persistence, sessions, JSON, authentication/authorization, and more. Yesod's major guiding principle is type safety: if your application compiles, it works.
Yesod is very well documented through a combination of haddocks and the Yesod book.
Yesod is built on WAI, or the Web Application Interface. This is similar to WSGI in Python or Rack in Ruby. It provides a single interface that all applications can target and work on multiple backends. Backends exist for CGI, FastCGI, SCGI, development server (auto-recompile) and even a Webkit-powered desktop version.
But the premier backend is Warp: a very simple web server which, at the time of writing, is the fastest Haskell has to offer. You can read more in its release announcement and see some followup benchmarks. Warp is already powering Yesod; some other major players that are planning a move are Hoogle and Happstack.
You can see a list of Yesod-powered sites and packages, or check out the source code for Haskellers. Most discussions for Yesod take place on the yesodweb list, so feel free to join in and ask any questions you have, the Yesod community is very beginner-friendly.
mohws
A web server with a module system and support for CGI. Based on Simon Marlow's original Haskell Web Server.
License: | BSD3 |
---|---|
Copyright: | Simon Marlow, Bjorn Bringert |
Author: | Simon Marlow, Bjorn Bringert <bjorn@bringert.net> |
Maintainer: | Henning Thielemann <webserver@henning-thielemann.de> |
Packages & repositories | Hackage - Darcs |
Scotty
A Haskell web framework inspired by Ruby's Sinatra, using WAI and Warp. Sinatra + Warp = Scotty.
Scotty is simple, cheap and cheerful way to write RESTful, declarative web applications. It has good documentation for all the relevant functions.
- 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.
License: | BSD3 |
---|---|
Author: | Andrew Farmer |
Maintainer: | Andrew Farmer |
Home page: | https://github.com/scotty-web/scotty |
Documentation: | http://hackage.haskell.org/package/scotty |
Package & repositories | Hackage - Git |
Miso
Miso is a small "isomorphic" Haskell front-end framework featuring a virtual-dom, diffing / patching algorithm, event delegation, event batching, SVG, Server-sent events, Websockets, and an extensible Subscription-based subsystem. Inspired by Elm, Redux and Bobril. IO and other effects (like XHR) can be introduced into the system via the Effect data type. Miso makes heavy use of the GHCJS FFI and therefore has minimal dependencies.
License: | BSD3 |
---|---|
Author: | David Johnson |
Maintainer: | djohnson.m@gmail.com |
Home page: | https://github.com/dmjio/miso |
Package & repositories | Hackage - Git |
Servant
Servant is a a light-weight framework primarily for REST APIs. It allows to specify API specifications as type aliases and then work with these type aliases to create servers, but also documentation, client code in Haskell and Javascript, etc.. It is based on wai.
License: | BSD3 |
---|---|
Author: | Alp Mestanogullari, Sönke Hahn, Julian K. Arni |
Maintainer: | alpmestan@gmail.com |
Home page: | http://haskell-servant.github.io/ |
Package & repositories | Hackage - Git |
Spock
Another Haskell web framework for rapid development: This toolbox provides everything you need to get a quick start into web hacking with haskell: routing, middleware, json, blaze, sessions, cookies, database helper, csrf-protection, global state
- Simple API
- Adds lots of useful features for rapid web development
- Fast tree based routing
- Plugins like Spock-auth and Spock-worker
License: | BSD3 |
---|---|
Author: | Alexander Thiemann |
Maintainer: | Alexander Thiemann |
Home page: | https://github.com/agrafix/Spock |
Documentation: | http://hackage.haskell.org/package/Spock |
Package & repositories | Hackage - Git |