HAppS -- Haskell Application Server v 0.8.8

License Download Documentation Mailing list News Architecture

Contact: Alex Jacobson <AlexJacobson AT! HAppS.org>

HAppS is a framework for developing Internet services quickly, deploying them easily, scaling them massively, and managing them ziplessly. Web, persistence, mail, DNS and database servers are all built-in so you can focus on app development rather than integrating and babysitting lots of different servers/services (the Haskell type system keeps everything consistent).

Documentation

Tutorial

Module API documentation generated by Haddock.

HAppS was inspired by Python Twisted, Prevayler, and SEDA. For details, see HAppS Architecture.

For trivial usage examples see hello world and simple mail and http example. For the source to Pass.net, a live application built on top of HAppS:

The server:
  darcs get http://www.pass.net/s/repo
The client library for using pass.net authentication in your application:
  darcs get http://pass.net/s/UsePassNetClient

Current issues

License

HAppS is released by HAppS.org under the terms of the BSD3 license which is enclosed with this package.

How do I get HAppS?


Mailing list

HAppS has a mailing list at GoogleGroups.


News

Recent changes

Darcs changelog.

0.8.8

0.8.4

0.8.2

Documentation Update (April 13, 2006)

Modified top of the homepage to reflect current thoughts on the value of HAppS.

0.8 GIGANTIC REFACTOR!!! (April 10, 2006)

Einar Karttunen has basically completely rewritten the ACID and HTTP codebase. Most of my code is gone. Einar's new code exposes a really easy to use monadic interface for apps. I've added some useful features. And much much more.

General Commentary

HAppS.MACID

Use HAppS.MACID to build applications that need to survive random shutdowns.

HAppS.DBMS

Use HAppS.DBMS if you want relational database like functionality for your Haskell types without using the IO Monad.

HAppS.DBMS.Example
This file provides a good explanation of how to use Haskell.DBMS
HAppS.DBMS.Table

You can think of a HAppS.DBMS.Table as acting like a Set with queryable indexes. A database then is simply a datastructure with one or more of these tables. The module provides you with useful functions for operating on tables including union, intersection, difference, innerJoin, outerJoin, agggregate, groupBy, etc.

A Table is actually a class rather than a datatype. Until someone implements the TemplateHaskell (hint! hint!), you will need to instantiate the class manually. See HAppS.DBMS.Example for an example of setting up and querying your database.

HAppS.DBMS.Index
Contains code for indexing various types of data. An Index is the reverse of a Map. You look up element values and get back sets of keys that have those values. Currently two basic indexes are implemented on top of Data.Map. One handles Ord lookups for any element type that supports Ord. The other provides really basic text indexing.

On HAppS Architecture

HAppS design was inspired by other work

Prospective Good News

What applications benefit from HAppS?

I am not saying that using HAppS, you could serve all of eBay on a single box. I am saying that your application is likely to be well within the constraints required for HAppS to make sense for it.


Todo

User agent detection needs refinement.  Currently defaults to client XSLT.  Should be the other way.

Disclaimer

        THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
        WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES
        OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE
        DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
        ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
        SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
        LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
        USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
        ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
        OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        SUCH DAMAGE.

Copyright (c) 2006 HAppS.org. All Rights Reserved.

Contact: Alex Jacobson <AlexJacobson AT! HAppS.org>