Ema is a next-gen Haskell library for building jamstack-style static sites. Ema sites are change-aware; in addition to good ol’ static site generation, Ema provides a live server supporting fast hot-reload in the browser, on code or data change.

The ultimate purpose of ema is to facilitate creating with ease your own neuron, 1 or just about any app that creates a browser view of arbitrarily changing data (on disk, database, or whatever). Ema is designed to facilitate creation of apps whose data is normally edited via traditional mechanisms (eg: text editor) but rendered as a delightful web page - so as to provide an economical read-only view of your data on desktop & mobile. A classic static site is just one type of such kind of apps.

This ultimate purpose is already realized in regards to neuron; see Emanote, which is built on top of Ema.
Links to this page
  • Dynamic Model

    Now if you run the app, and modify the data/mood.csv file (eg: change “Neutral” to “Bad”), your app’s web view will update in real-time. This concludes the tutorial series, and hopefully you have gained an introductory understanding of what is entailed behind the “just about any app that creates a browser view of arbitrarily changing data” claim in the index page. You can view the source code for the mood tracker tutorial at https://github.com/srid/MoodTracker-Tutorial.