ema: Static site generator library with hot reload

[ agpl, library, web ] [ Propose Tags ]

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, it provides a live server supporting fast hot-reload in the browser on code or data change.

[Skip to Readme]


Automatic Flags

Include examples and their dependencies


Include helper modules based on blaze-html


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees


Versions [RSS],,,,,
Change log CHANGELOG.md
Dependencies aeson, async, base (>= && <=, blaze-html, blaze-markup, commonmark, commonmark-extensions, commonmark-pandoc, containers, data-default, directory, filepath, filepattern, fsnotify (>=0.3 && <0.4), http-types, lvar, megaparsec, monad-logger, monad-logger-extras, neat-interpolation, optparse-applicative, pandoc-types, parsec, parser-combinators, relude (>=0.7 && <1.0), safe-exceptions, stm, text, time, unicode-transforms, unionmount, unliftio, uri-encode, wai, wai-middleware-static, wai-websockets, warp, websockets, yaml [details]
License AGPL-3.0-only
Copyright 2021 Sridhar Ratnakumar
Author Sridhar Ratnakumar
Maintainer srid@srid.ca
Category Web
Home page https://ema.srid.ca/
Bug tracker https://github.com/srid/ema/issues
Uploaded by sridca at 2021-11-21T23:15:48Z
Distributions NixOS:
Downloads 279 total (15 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2021-11-21 [all 1 reports]

Readme for ema-

[back to package description]


Hackage FAIR

Ema is a next-gen Haskell library toolkit for building jamstack-style static sites, with fast hot reload. See ema.srid.ca for further information.



Run bin/run (or Ctrl+Shift+B in VSCode). This runs the clock example (which updates every second, only to demonstrate hot reload); modify ./.ghcid to run a different example.

Getting Started