MFlow is simply the most high level, most advanced and fun to program web framework. MFlow uses Haskell magic to counteract the wicked Web programming magic, that terrifies the programmer with all their explosion of events, configurations, plumbing lookups and identifiers, in order to restore programming to be intuitive and natural again. Everything in MFlow that seems sophisticated is to solve a real problem at hand, not a fancy way to hide with new names the inherent flawed nature of the MVC model when used in real web applications.
MFlow Web applications are much like console applications. You just write an ordinary sequential program with inputs, outputs and control statements where the inputs and outputs are web pages. MFlow will run the sequence forward and backward depending on your input to find the appropriate location in the sequence to respond your query.
MFlow works just in the same way people would read a cooking recipe: Each person look for instructions forward or backward until they find the correct point in the sequence appropriate for his state in the cooking process. To know his state, the people remember the name of the steps already done, but not the details of each step. That is exactly what MFlow does. All is pure tracking, backtracking and event logging.
Other frameworks try to do it with heavy page state or execution state snapshots That is too bad for scalability and this has limited the acceptance of this model for large scale web applications.
Since the navigation is coded as a normal procedure under the navigation monad, any navigation sequence can be reusable. Deployment and configuration is reduced to zero. The elements can work together if they type-check. In the examples you will see different ways to combine components: either widgets inside widgets, different widgets in a page or complete application flows called as normal procedures in a program.
See README.md in the initial repository for full instructions.