title | description | source | edit |
---|---|---|---|
Maki Docs |
Learn how to use Maki, the a full-stack application framework. |
Maki is a full-stack application framework with a robust plugin ecosystem and a convenient and extensible resource-oriented API.
Ready to get started? Jump straight to Hello World with Maki.
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:
ping
should be responded to with a "pong" result.patch
will provide an array of operations to execute on a resource.transaction
will provide an atomic set of cross-resource operations, bundling manypatch
arrays, addressed by their channel.subscribe
to add an additional channel to your existing socket.unsubscribe
to 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.
.
├── config # configuration files (generally overridden by environment variables)
├── data # data files for use in various places.
├── lib # various classes / prototypes
├── locales # strings for translations
├── private # resources not exposed to the client (LESS, etc.). This is a 1:1 map of the public folder
│ └── css # contains the LESS files used to generate the **public** CSS files (currently, autogenerated using asset-rack)
├── public # resources exposed to the client (images, CSS, etc)
│ ├── css # CSS
│ ├── fonts # Fonts (.woff, etc.)
│ ├── img # Images
│ └── js # JavaScript
├── tests # Tests. Write them.
└── views # composable elements for rendering HTML, JSON, or XML
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.