node package manager



Build Status

a restify.js based microservice library, inspired by sails.js


npm install --save restify-microservice


To provide a highly customizable platform for a well-organized restify.js app, using hooks. By default, restify-microservice comes bundled with hooks for middleware, models, controllers, services, policies, routing, etc. However, this module allows you to implement custom hooks extremely easily, as well as disable, override, or reorder the default hooks. More importantly, this module makes no assumption regarding which other third party libraries (ORMs, middleware, templating engines, etc) you'd like to use in your app. In fact, using restify is entirely optional, and can be disabled by excluding the server hook or implementing your own


  1. Getting Started
  2. Controllers
  3. Services
  4. Routing (Part I)
  5. Policies
  6. Routing (Part II)
  7. Models and Connections


Bundled Hooks

restify-microservice comes bundled with the following hooks:

  • connections
  • models
  • server
  • services
  • policies
  • controllers
  • routes

The default hooks configuration is shown below. You can override this by providing your own configuration in config/hooks.js.

module.exports = [

To implement your own hook configuration, define your own config/hooks.js file:


module.exports = [
    require('../hooks/my-hook.js'), // custom project hook 
    'super-cool-hook', // installable hook 
    require('../hooks/my-own-routes-hook') // custom project hook 

Custom Hooks

Implementing a custom hook is as easy as requiring a file/module that exports a function that accepts a single callback. The function is bound to the microservice context, which allows you to manipulate any aspect of the microservice.


module.exports = function(done) {
    var microservice = this;
    // this assumes that the `services` hook was run prior to this hook and that 
    // we implemented a service `app/services/dynamoDB.js` that exports a dynamoDB 
    // document client['dynamoDB'].put({
        TableName: 'service-logs',
        Item: {
            'service': 'my-service',
            'event': 'starting',
            'info': {
    }, function(err, data) {
        if (err) {
            microservice.log('error', err);
            return done(err);

Installable Hooks & Adapters


To use these hooks, simply install them via npm install --save <insert hook name here> and require them in your config/hooks.js file.



run all tests

npm test

run coverage

grunt coverage


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request


Copyright (c) 2015 Chris Ludden. Licensed under the MIT license.