mmm === mmm is not the www, because it runs on [MoonScript][moonscript]. live version at [mmm.s-ol.nu][mmm]. What? ----- This repo is roughly split into three parts: - `mmm.dom`, `mmm.component`: polymorphic Lua/Moonscript modules for web development. \[[code: `mmm`](mmm) - [docs](https://mmm.s-ol.nu/meta)\] - `mmmfs`: the CMS/FS powering [mmm.s-ol.nu](https://mmm.s-ol.nu). \[[code: `mmm/mmmfs`](mmm/mmmfs) - [article](https://mmm.s-ol.nu/articles/mmmfs)\] - 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`](root), but you might want to read a bit about mmmfs before you jump in.] Building & Viewing ------------------ mmm is built using [tup][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 ### Dependencies Required dependencies: - [MoonScript][moonscript]: `luarocks install moonscript` - [lua-http](https://github.com/daurnimator/lua-http): `luarocks install http` For unit tests: - [busted](https://olivinelabs.com/busted/): `luarocks install busted` Not required but recommended: - [lua-sqlite3](https://luarocks.org/modules/moteus/sqlite3): `luarocks install sqlite3` (for SQLite3 backend) - [lua-cjson](https://www.kyne.com.au/~mark/software/lua-cjson.php): `luarocks install lua-cjson 2.1.0-1` (for server-side JSON support) - [discount](https://luarocks.org/modules/craigb/discount): `luarocks install discount` (requires libmarkdown2, for Markdown support) ### Live Reloading (during development) [entr][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 [moonscript]: https://moonscript.org/ [mmm]: https://mmm.s-ol.nu/ [tup]: https://gittup.org/tup [entr]: http://eradman.com/entrproject/