Happstack Crashcourse

Happstack is the Haskell application server stack. It is primarily used for web application development, but it can be used for any type of application server.

Happstack's mission is to enable developers to prototype quickly, deploy painlessly, scale massively, operate reliably, and change easily.

Why You Should Read This

This guide is designed to provide you with a clear, practical understanding of how to develop applications with Happstack. It is not especially witty or entertaining, but it should be very easy to read and pratical to apply. I have avoided any talk of theory and just focused on how to get things done.

Every topic covered in the course comes with a small, self-contained, fully-functional example which you can download directly from the page. This should make it very easy to experiment and to learn by doing.

I highly recommend you read this tutorial first rather than trying to understand Happstack by looking at the source code and haddock documentation. Learning Happstack by looking at the source and haddock docs would be like trying to learn to drive by first opening up the hood of the car and trying to understand what is going and then reading the owners manual.

This guide will take you through all the practical aspects of using Happstack, and keep you from accidentally focusing on unimportant things like UnWebT. This is a course for people who want to drive the car, not open an auto shop.

This tutorial assumes that you will be deploying your application on a VPS or dedicated server where you can have a server process that is always running. However, many components of Happstack can be used in a CGI / shared-server environment.

This tutorial is still a work in progress. If you want to contribute to this tutorial you can get the source via:

darcs get http://src.seereason.com/happstack-crashcourse

If you find mistakes or have difficulty following portions of this course, please let us know on the mailing list so that we can make fixes and improvements.

#include "toc.html"