GithubHelp home page GithubHelp logo

tranquil's Introduction

Tranquil

v0.0.6 Very Beta

Generate powerful RESTful JSON APIs

Installation

npm install tranquil

Usage

Note: This API may change in the future

Create a Tranquil server

var tranquil = require("tranquil");

var server = tranquil.createServer({
  baseUrl: '/api',
  //default access
  access: 'admin'
});

Note: See all server options below

Add some database validators

server.addValidators({
  email: {
    validator: function(e) {
      return !!e.match(/@/);
    },
    msg: "yo missin da @ !"
  }
});

Add some RESTful resources

server.addResource({
  name: 'Company',
  schema: {
    c: String,
    d: Number,
    employees: ['User'],
    owner: 'User'
  },

  //custom access definition
  access: {
    c: 'admin',
    r: true,
    u: ['admin', 'moderator'],
    d: false
  }
});

server.addResource({
  name: 'Report',
  schema: {
    e: String,
    f: Number,
    //posts have 1 forum
    //forum has many posts
    assignedBy: 'User',
    assignedTo: 'User'
  }
});

Add a special user RESTful resource

server.addUserResource({
  name: 'User',
  schema: {
    email: {
      type: String,
      validate: ['email'] //use the email validator above
    }
  },
  databaseMiddleware: {
    post: {
      save: function(doc) {
        console.log("saved", doc);
      }
    }
  }
});

Note: UserResources will mixin user specific fields. See below for mixins.

Finally, start the server on port 3000

server.listen(3000);

Now you have CRUD access to the RESTful endpoints:

  • The Report Resource on /api/report
  • The Company Resource on /api/company
  • The User Resource on /api/user

API

tranquil.createServer(options)

Creates a server instance which can listen on a port.

server.addResource(options)

Adds a RESTful resource to the server instance

options

schema: A Mongoose Schema object.

Note: String validators and property types get replaced with tranquil validators and resources respectively

access: An object which defining the access control list.

databaseMiddleware: Mongoose middleware definitions.

expressMiddleware: Express middleware definitions.

server.addUserResource(options)

...

server.addMixin(mixin)

mixin

Mixins are small options objects which contains partial configuration that can be mixed in to other options objects.

tranquil's People

Contributors

jpillora avatar banchee-admin avatar

Stargazers

M Haidar Hanif avatar Robert Long avatar Rob Scott avatar

Watchers

 avatar James Cloos avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.