Maki is a full-stack application framework with a robust plugin ecosystem and a convenient and extensible resource-oriented API.
Resources are the heart and soul of Maki, which exists solely to provide a reasonable framework for automation surrounding their definition, as they apply to your application.
You can think of Resources just like Objects in your traditional Object-Oriented Programming (OOP) model. With Maki, all Objects inherit from a common base class, including a common messaging framework and event-driven state mutations.
Resources are exposed by Maki in the form of Services. A prime example of a
Service would be the
http service, which provides Resources to web clients in
the form of JSON or even HTML.
Maki's messaging infrastructure is based on JSON-RPC, a convenient wrapper for calling remote methods and retrieving their results. All Maki Resources implement the following methods:
pingshould be responded to with a "pong" result.
patchwill provide an array of operations to execute on a resource.
transactionwill provide an atomic set of cross-resource operations, bundling many
patcharrays, addressed by their channel.
subscribeto add an additional channel to your existing socket.
unsubscribeto remove a channel from your socket.
Maki is meant to be understood without context or documentation, and as such the directory structure [and the code itself, for that matter] should be fairly self-explanatory. Nevertheless, here's an explicit declaration for each of the default folders and their intended use.
Maki's architecture is Resource-centric. All aspects of the datastore, its query pipeline, the business logic, and view layer are derived from the definition of the Resources your application exposes.