Snap (web framework)

Snap is a web development framework written in the Haskell programming language.[3][4]

Snap
Original author(s)Gregory Collins, Doug Beardsley[1]
Developer(s)Snap Team
Initial releaseMay 2010
Stable release
1.1.3.2[2] / July 19, 2023; 11 months ago (2023-07-19)
RepositorySnap Repository
Written inHaskell
Operating systemCross-platform
TypeWeb framework
LicenseBSD License
Websitesnapframework.com

Overview

The Snap framework consists of the following:

  • snap-core,[5] a generic Haskell web server API.
  • snap-server,[6] a fast[7] HTTP server that implements the snap-core interface.
  • Heist,[8] an HTML-based templating system for generating pages that allows you to bind Haskell functionality to HTML tags for a clean separation of view and backend code, much like Lift's snippets. Heist is completely self-contained and can be used independently.
  • Snaplets,[9] a high-level system for building modular web applications.
  • Built-in snaplets for templating, session management, and authentication.
  • Third party snaplets for features including file uploads, database connectivity (PostgreSQL, MongoDB, etc.), generation of JavaScript from Haskell code, and more.
  • The Snap monad for stateful access to HTTP requests and responses.[10]

Snap runs on both Windows NT and Unix-like platforms. Snap uses the Iteratee I/O model,[11] As of version 1.0, its i/o is implemented with io-streams.

Usage

Snap is used by Silk,[12] JanRain,[13][14] Racemetric,[15] www.lpaste.net,[16][17] SooStone Inc, and Group Commerce. Snap is also used as a lightweight, standalone Haskell server. The static site generator Hakyll uses Snap for its preview mode.[18]

Other Haskell web frameworks

References