Bug#400042: ITP: happs -- Haskell library for building Internet applications
Owner: Kari Pahula <firstname.lastname@example.org>
* Package name : happs
Version : 0.8.4
Upstream Author : Alex Jacobson <AlexJacobson AT! HAppS.org>
* URL : http://happs.org/
* License : BSD with advertising clause
Programming Lang: Haskell
Description : Haskell library for building Internet applications
HAppS is a Haskell library for building industrial strength Internet
applications safely, quickly, and easily. With HAppS you focus
entirely on application functionality implemented in your favorite
language and you don't have to worry about making sure all sorts of
server subsystems are functioning properly.
- HTTP Application Server
Performs better than Apache/PHP in our
informal benchmarks (thanks to FastPackedString), handles serving both
HTTP-Auth, and more.
- Mail delivery agent with integrated DNS resolver
Stop worrying about making sure a separate local mail server or DNS is
up and running to delivery your mail. HAppS takes care of making sure
your mail is delivered as long as your application itself is running
and makes sure no outbound mail is lost even with unplanned restarts.
- XML and XSLT
Separate application logic from presentation using XML/XSLT. With
HAppS, you can have your application output XML (via HTTP or SMTP) and
handle style/presentation via separate XSLT files at runtime. HAppS
takes care of doing server side XSLT for outbound mail and HTTP
user-agents that don't support it client side.
- SMTP Server
Handle incoming email in your application without worrying about
.procmail or other user level inbound mail configuration hackery. Just
have the HAppS.SMTP listen on port 25 or have the system mail server
SMTP forward mail for your app to some internal port.
- Monadic ACID transaction service
Write apps as a set of simple state transformers. MACID write-ahead
logging and checkpointing make it easy for you to guarantee
application integrity in the face of unplanned outages. MACID even
guarantees that your side effects will be executed at-least-once if
they can complete within a timelimit you define.
- Session Service
Define bits of per-user application state that automatically expire
after time limits you define. No more manual housekeeping of session
- (Experimental) Table and Index
Do relational operations safely on in memory Haskell Data.Set(s)
rather than dealing with an external SQL relational database. Define
custom indices for your Haskell datatypes (e.g. geographic/geometric
types). Use in combination with MACID for a robust relational DBMS
customized for your application.