A Hapi server with superpowers
Last updated a year ago by svallory .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install @tokilabs/tractor 
SYNC missed versions from official npm registry.


A Hapi server with superpowers


When building apps using microservices it's important that they have the same structure and their setup is as close as possible to each other. Tractor packs the tools that are used in all of our microservices and comes with sensible defaults for both development and production environments. It's configuration is accessible from outside so you can tailor it to your specific needs.

By the way, don't worry. Every feature is optional.

What's on the package

  • Dependency injection using an Inversify Container from Plow
  • A catch-all controller for 404 responses and logging
  • A meta controller that lists your API routes
  • Exception classes for normalizing error responses
  • Response classes for common scenarios: AckResponse, CreatedResponse and NotFound
  • @Controller and @Endpoint decorators for Hapi routing
  • Request class you can extend to automatically deserialize the request


Tractor's minor version now matches the hapi major version, beginning with Hapi 18. Anything lower than that is for Hapi 16.x.

We do not support Hapi 17 (simply because we never used it, feel free to submit a PR)

Simple Usage

import { createServer } from '@cashfarm/tractor';

export const ServiceName = 'TodoService';

export const server = createServer(
  // Service name
  // Options
    apiPrefix: '/todos/v1',
    port: 8000
.then(srv => {
  // If your are using @Controller decorator, just require your controllers

  // if running directly, start the server
  if (!module.parent) {
    srv.start(() => {
      console.log(`✅ Started ${ServiceName} microservice on ${srv.info.uri}`);

  // if importing, return the server (used for testing)
  return srv;

Configuration Options


@type boolean default: true in development, false in production

Defines where logs and errors should contain debug information or not


@type boolean default: true

Whether to enable CORS or not


@type boolean default: 3000

The port to listen to


@type number default: ''

An optional prefix to all endpoints

Current Tags

  • 0.18.1                                ...           latest (a year ago)

2 Versions

  • 0.18.1                                ...           a year ago
  • 0.18.0                                ...           a year ago
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (22)
Dependents (0)

Copyright 2014 - 2016 © taobao.org |