Snap (web framework)

Snap is a web development framework written in the Haskell programming language.

Overview
The Snap framework consists of the following:
 * snap-core, a generic Haskell web server API.
 * snap-server, a fast HTTP server that implements the snap-core interface.
 * Heist, 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, 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.

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

Usage
Snap is used by Silk, JanRain, Racemetric, www.lpaste.net,  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.

Other Haskell web frameworks

 * Yesod (web framework)
 * Scotty
 * Spock
 * MFlow
 * Miso