an expeditious web application server backend
a flexible web development framework
a transparent database application
and a pile of helpful gubbins
Moonstalk is free software for *nix systems (Linux, Mac OS X) enabling efficient development and hosting of dynamically generated web projects built with the Lua language; from basic pages to complex applications…
For designers Moonstalk is an all-purpose system (akin to PHP), just add dynamic markup into your HTML and you're done; … for site developers Moonstalk allows you to use your own structure (e.g. MVC), supplemented by your choice of application functionality (such as a CMS environment); … for application developers Moonstalk is a framework with which you can provide, configure, hook-into, or replace its components—favouring (but not enforcing) convention-over-configuration (avoiding settings), synchronous request–response flow (avoiding callbacks), and free-form relationships (avoiding class hierarchies).
The framework is beta (see the public BitBucket repository for the latest commits), and in limited production use. Ongoing development is currently primarily derived from private projects being deployed with the framework, however feedback is encouraged!
Internal API changes are likely to occur for applications, however other functions (sites, pages,…) should remain stable. The manual is not currently up-to-date and you may need to refer to the sources.
Whilst Moonstalk's development has been self-supporting to date, its future goals could employ additional backing, therefore potential sponsors, development partners and volunteers are invited to get in touch to help further them.
The core framework is functionally complete, but needs extending with additional server interfaces / invocation models (e.g. under Nginx/OpenResty). Applications independently supplement this functionality beyond the scope of the framework itself. Improvements to the internal request-response flow and application hooks should also be made, with some (e.g. authentication) requiring better (complete) separation from internal framework routines.
The primary ongoing focus is upon the Teller database, notably in adding replication and cluster operations. It is intended that Moonstalk's multi-node capabilities will initially offer a basic real-time fail-over mode, employing a backup node and using one-way replication. This will then be extended to include a resilient multi-node mode with bidirectional replication, particularly for Anycast deployments — achieving the ideal combination of low latency for both proximity and processing.
Such multi-node operation will allow an installation of Moonstalk as a LAN node (e.g. on-site at an office or home) that is synchronised with a WAN node, providing both the benefits of on-site with cloud deployments, e.g. enabling SaaS to be deployed at customer locations.
Ultimately Moonstalk should also provide dynamic code updates (extending the current dynamic view-controller reloading to include functions and settings too), and on-demand node scaling (through applications handling provider PaaS APIs).
Also being considered is a MongoDB adapter that will allow the included database to be swapped out whilst retaining much functionality of existing applications.