1. happs intro
  2. the missing happs documentation
  3. getting started with happs
  4. prerequisites
  5. cabal install me
  6. main
  7. url handling
  8. templates
  9. stringtemplate basics
  10. form post data
  11. querystring get data
  12. macid data
  13. changing the data model
  14. cron jobs
  15. thanks

Run This Tutorial Locally

Before going further, you may want to inform yourself about the basic prerequisites, both knowledge and equipment, you need to make the best use of this tutorial

This tutorial is cabalized. You can install and run it simply by doing

cabal install happs-tutorial

The cabal installation may take up to an hour, mainly because the HAppS-Server installation is slow, but it should succeed in one shot. This is a symptom of the HAppS slow linking bug.

If you've never used cabal install or need more detailed info....

  • Haskell: You need at least ghc 6.8.2 to install HAppS. I installed this with with apt-get install haskell (works for ubuntu hardy heron), and then upgraded to ghc 6.8.3 as this is supposed to have fixed some bugs.
  • Dependency chasing haskell package installers: you should have the latest versions of cabal and cabal install from hackage. These are already included in the latest version of ghc, or they will be soon. Another reason to upgrade to ghc 6.8.3.
  • If you want to check out the latest version of this tutorial, install Darcs and check out the repo with darcs get http://code.haskell.org/happs-tutorial

To run the app, either do ./hackInGhci.sh and then execute runInGhci inside Main.hs, or recompile the executable using ./runServerWithCompileNLink.sh. Really you only need to be inside ghci if you are experiencing the slow link time issue. This isn't a problem at time of writing but seems to crop up from time to time.

Shutdown with ctrl-c.

You should now be able to browse this tutorial offline by running the executable, and opening http://localhost:5001 in your browser.

You may also want to start HAppS on boot.

Next up is the HAppS server main function.