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).
Quickly develop web apps in Haskell that perform beautifully, scale massively, and can change without hassle.
- High performance HTTP, FastCGI, UDP, and SMTP handling
- Relational operations on Haskell data structures
- ACID transactions on your application state
- Boilerplate-free marshalling of your types in and out of XML, HTML forms, and url-encoded form
- All in one executable with Haskell type system guarantees that your app and data are in sync (no need for coordinating lots of different server component types)
- Type safe migrations as your state types change
- Multimaster replication of your app so if one or more servers goes down your app doesn't have to.
- Automatic recompilation so you don't have to go to the shell to see the impact of your changes. Modifications to any of your source immediately update your site, just like other interpreted languages (except you get compiler errors too!)
First and foremost, check out the blog example.
Alex wrote a minimal example that may also be helpful when getting started.
There are two ways to install HAppS.
If you want to use cabal to install, first get the 0.9.1 version of HAppS with darcs:
- darcs get --partial http://happs.org/HAppS/HAppS-Util - Utility code shared by all these libs
- darcs get --partial http://happs.org/HAppS/HAppS-Data - marshalling haskell types to/from XML and pairs
- darcs get --partial http://happs.org/HAppS/HAppS-IxSet - relational operations on haskell data types
- darcs get --partial http://happs.org/HAppS/HAppS-State - ACID operations on your haskell state type
- darcs get --partial http://happs.org/HAppS/HAppS-Server - HTTP, SMTP, and UDP server libraries
- darcs get --partial http://happs.org/HAppS/HAppS-Begin - Example app and skeleton from which to build your app
To install in your home directory, put your own username in place of $USERNAME and run:
- runhaskell Setup.hs configure --prefix=/home/$USERNAME/usr
- runhaskell Setup.hs build
- runhaskell Setup.hs install --user
To do a system-wide install run the first two commands under your own account and then run the install command as root via su, sudo, or whatever you usually use.
- runhaskell Setup.hs configure
- runhaskell Setup.hs build
- sudo runhaskell Setup.hs install
To install with SearchPath, first download and build SearchPath:
- curl http://searchpath.org/searchpath/SearchPath.hs > SearchPath.hs
- ghc -main-is SearchPath --make SearchPath.hs -o sp
- sudo mv sp /usr/local/bin
Then use darcs to get the HAppS-Begin repository:
darcs get --partial http://happs.org/HAppS/HAppS-Begin - Example app and skeleton from which to build your app
and use SearchPath to fetch the dependencies, build and run the application:
sp runhaskell -ihaskell haskell/Main.hs
HAppS is released under a BSD license. HAppS is a trademark of HAppS LLC. All Rights Reserved