Maki Docs

Learn how to use Maki, the a full-stack application framework.

Improve This!
Have a suggestion? This content is open-source, so lend a hand!

Welcome to Maki.

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

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.

Learn about Resources

Services

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.

Learn about Services

Messaging

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 many patch arrays, addressed by their channel.
  • subscribe to add an additional channel to your existing socket.
  • unsubscribe to remove a channel from your socket.

Default Directory Structure

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

Architecture

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.

Maki Architecture Overview