In building a web app, there are a lot of libraries to choose. Here’s what I’m planning to use in building Assignment Manager:
-
Templating: HSP
HSP templates are written right in the Haskell files. They use Template Haskell to achieve this. You can insert arbitrary Haskell into the templates.
-
Database: HDBC (with sqlite3)
HDBC is a thin layer over SQL. The queries are just strings; the data values are represented by a special SQL data type.
-
Authentication: happstack-authenticate
This library takes care of all the authentication stuff. It even makes OpenIDs work, out of the box.
-
Routing: web-routes (typesafe)
To make internal links “typesafe”, there is a data type that is a URL for the site. It is a variant with a option for each type of page. The variant-type gets turned into urls for the pages; web-routes handles the building and parsing of the urls.
-
Forms: reform (typesafe)
reform is a really neat library. It defines various functions to make html forms easy to build. It takes care of handling the details. The user code is at the level of defining the form, the confirmation page, and functions for deciding whether to accept the message.
I’m also planning on using Twitter’s Bootstrap to make things pretty. Using their CSS will probably make this project look a lot more professional a lot more quickly than it would if I were doing the styling. :)
I’ve made a prototype of a main/landing page:
I’ll be posting screenshots of a login demo by Monday. :)