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 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


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


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


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