both


License
MIT
Install
npm install both.io@0.8.7

Documentation

BothIO Logo

Gratipay Build Status bitHound Score Codacy Badge devDependency Status

What is BothIO?

Simple, it's a library based on the CQS-Princip, where your methods are separated by commands and queries.

What BothIO makes so special is the NodeJS/Client-Support, so you can execute your commands and queries from your node-side as well as from your client-side.

Install

$ npm install both.io

Example

var myToDoList = [];

// # Define a Command
// Server:
both.command('CreateTodo', function(name, payload, callback){
  myToDoList.push(payload.todoName);
});

// Execute a Command
// Client:
both('CreateTodo', {
  todoName: 'eat some chocolate'
});


// Listen to a defined Command
// Server:
both.on('CreateTodo', function(name, payload){
  console.log('Todo Created:', payload.todoName);
});

// Listen to all Commands
// Client:
both.on(function(commandName, payload){
  console.log('The command', commandName, 'was executed!');
  console.log('with the payload:', payload);
});


// # Add a Callback
// Server:
both.query('GetAllTodos', function(name, payload, callback){
  someDatabase.query('getAllTodos', function(todos){
    callback(todos);
  });
});

// Client:
both('GetAllTodos', {}, function(todos){
  // Use Todos at the client
})

And there's something more planed

Battle-Tested

This project is used at the entertain.io platform.

Contribute

BothIO uses the new ES6 standard and is tested with mocha, plus we package the code with webpack.

You want contribute? Here is how you start:
Clone repo
git clone git@github.com:michaelzoidl/both.io.git
Run the unit-tests
npm run test
Pack the code and save it in the dist-folder
npm run pack
Develop, it starts a mocha-watcher
npm run develop