The MFlow package
Simple application server with stateful request-response flows, persistent and transparent session handling. server process management, combinators for the definition of widgets and formlets that can be mixed freely with HTML formatting and produce statically typed web applications. Adopt and extend the best formlet/applicative Haskell traditions Console and window oriented apps are possible.
MFlow (MessageFlow) was created initially as the user interface for the Workflow package . Currently is an alpha version. It has only basic authentication but I plan to inprove it for serious applications.
It includes Application Server features such is resource an process management and automatic recovery
Resource management: The user can define process and session timeout. The process is automatically rerun after timeout if a new request arrive with transparent recovery of state, at the point of the interrupted dialog even after server crash.
The backend operation relies on the Workflow package (http://hackage.haskell.org/package/Workflow/index), this gives transparent sessión persistence and recovery, all of this is supported by TCache (http://hackage.haskell.org/package/TCache/index), that gives backend-independent transactions and can be used directly by the programmer. Persistence in files for session and data out of the box enables very fast prototyping.
All the plumbing is hidden to the programmer, There is no methods for session management, database query, recovery and so on. All of this is transparent So the surface exposed to the programmer is minimal.
Includes generalized formlets that permits the mix of active widgets in the same page while remaining statically typed and, thus the programs can verify correctness at compilation time.
Includes combinators for seamless inclusion of these widgets within user defined HTML formatting. Bindings for Text.XHtml. The widget generation may be easy for user with familiarity with formlets/digestive functors and Text.XHtml formatting.
Currently it has bindings for the Hack interface
Bindings for HSP
Other bindigs for Hack alternatives
For package maintainers and hackage trustees