mmm / abefbf8

Tree @abefbf8 (Download .tar.gz)


mmm is not the www, because it runs on MoonScript.

live version at


This repo is roughly split into three parts:

  • mmm.dom, mmm.component: polymorphic Lua/Moonscript modules for web development.
    [code: mmm - docs]
  • mmmfs: the CMS/FS powering
    [code: mmm/mmmfs - article]
  • the page contents: includes my portfolio, blog, experiments...
    authored using a mix of Moonscript, Markdown and HTML, thanks to the power of mmmfs.
    [data: root, but you might want to read a bit about mmmfs before you jump in.]

Building & Viewing

mmm is built using tup.
You can build the static content with:

$ tup init
$ tup

Next you can render a sqlite3 mmmfs database using

$ moon build/render_all.moon db.sqlite3

Then, run some kind of HTTP server from within out, e.g. with python 3 installed:

$ cd root
$ python -m http.server

You can then view the website in your browser. The example above will provide it at http://localhost:8000.

During development you may want to automatically rebuild the project as files are changed. You can do this with the following command:

$ tup monitor -f -a


You will need:

  • MoonScript: luarocks install moonscript
  • lua-sqlite3: luarocks install sqlite3
  • lua-http: luarocks install http
  • discount: luarocks install discount (requires libmarkdown2)
  • busted: luarocks install busted (for testing only)

Live Reloading (during development)

entr is useful for reloading the dev server when code outside the root changes:

$ ls build/**.moon mmm/**.moon | entr -r moon build/server.moon fs