Just enjoy the data out-of-the-box.📦
Clone or download
Latest commit ec72b92 Nov 9, 2018



Macaca DataHub


NPM version build status Test coverage node version npm download docker pull docker pull docker pull

Just enjoy the data out-of-the-box.📦












This project follows the git-contributor spec, auto upated at Fri Sep 21 2018 23:28:17 GMT+0800.


Macaca DataHub is a continuous data provider for development, testing, staging and production.

A Comprehensive Solution

DataHub is born to solving the lifecycle needs of mock/testing data of software development, from development, testing, staging to final production. Software engineers and test engineers use DataHub to manage their mock/testing data.


DataHub is flexible with how and where mock/testing data is stored.

You can use a local instance of Datahub on your local machine to manage your local testing/mock data during development. The mock/testing data is in plain text. It can be versioned and archived with any version control software, together with your project files.

In addition, the local mock/testing data can be pushed and synchronized to a remote Datahub server to meet the needs of data sharing and collaboration.

Data Flow Management

DataHub adopts the principle of unidirectional data flow to make sure you will always get the latest data.

Consistency Between API Document and Mock Data

Datahub can also automatically generate an API document from your mock/testing data, to help keep your API document up to date and consistent with your mock data.

DataHub Dashboard

DataHub adopts multi-scenario design, can group data according to the scene name, and provide scene data addition, deletion, and change, and can operate through DataHub's panel interface.

DataHub provides a dashboard for you to manage your data. You can group data by scene, or by stage such as development, testing, or staging. Datahub provides standard CRUD funtions.

Datahub use path-to-regexp for dynamic path matching.

API name example:

DataHub API name matched request path
api1/books api1/books
api2/:foo/:bar api2/group/project
api3/:id api3/fred
api3/:id api3/baz

Save Snapshot

DataHub can save the response of each request by taking snapshot. You can use the archieved snapshot to find out what happened.

More intro

Experiment - Upload and Download

Use Upload and Download

Upload and Download Project Data

Upload and Download Interface Data


Macaca datahub is distibuted through npm. To install it, run the following command line:

$ npm i macaca-datahub -g

Common Usage

Start datahub server

$ datahub server

The server will create backup files with prefix 'macaca-datahub.data-backup-' for the database periodically.

Run with docker

$ docker run -it -p 9200:9200 -p 9300:9300 macacajs/macaca-datahub


key type description default
port Number port for DataHub server 9200
mode String mode for DataHub server 'prod'
protocol String protocol for DataHub server 'http'
database String path to file database $HOME
store String path to migrate directory undefined
view Object view layer config {}

Sample: macaca-datahub.config.js

module.exports = {
  mode: 'local',

  port: 7001,

  store: path.resolve(__dirname, 'data'),

  view: {
    // set assets base url
    assetsUrl: 'https://npmcdn.com/datahub-view@latest',

You can also use the Third-part UI platform, for example use datahub-platform, only need to point assetsUrl.

module.exports = {
  view: {
    assetsUrl: 'https://unpkg.com/datahub-platform@latest',

Pass config file[.js|.json] to DataHub server.

$ datahub server -c path/to/config.js --verbose

Schema Syntax

DataHub use standard JSON schema syntax, schema must has the root node.

  "type": "object",
  "required": [
  "properties": {
    "success": {
      "type": "boolean",
      "description": "server side success"
    "data": {
      "type": "array",
      "description": "data field",
      "required": [
      "items": [
          "type": "object",
          "required": [
          "properties": {
            "key": {
              "type": "string",
              "description": "key description"
            "name": {
              "type": "string",
              "description": "name description"
            "age": {
              "type": "number",
              "description": "age description"
            "address": {
              "type": "string",
              "description": "address description"
    "errorMessage": {
      "type": "string",
      "description": "error message description"

Project Integration

Quick start in your web project

Integration with webpack-dev-sever

More about datahub-proxy-middleware

Integration with Egg.js

More about egg-datahub

Integration with UmiJS

UmiJS is a blazing-fast next.js-like framework for React apps, and it's friendly to ant-design project.

Play Docker

Run as standalone just once service.

$ docker run -it --rm \
  --name macaca-datahub \
  -p 9200:9200 \
  -p 9300:9300 \

Run with existed DataHub's database in your host.

$ docker run -it --rm \
  --name macaca-datahub \
  -v $HOME/.macaca-datahub:/root/.macaca-datahub \
  -p 9200:9200 \
  -p 9300:9300 \

Run as a service.

$ docker run \
  --name macaca-datahub \
  -v $HOME/.macaca-datahub:/root/.macaca-datahub \
  -p 9200:9200 \
  -p 9300:9300 \
  -d macacajs/macaca-datahub

Build base image.

$ docker build --no-cache --pull -t="macacajs/macaca-datahub" .


DataHub provides SDKs in multiple languages for easy integration with your test code.


The MIT License (MIT)