Skip to content


Subversion checkout URL

You can clone with
Download ZIP
a toolkit for building realtime APIs

This branch is 1053 commits behind deployd:master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Extensible, distributed, streaming resource server.


  • Streaming, Any-Size File Storage
  • Queryable JSON Collections
  • Validation
  • Authentication
  • Proxy and Redirection
  • Extensible via Middleware


$ [sudo] npm install deployd -g

Starting / Stopping

You can start and stop the server with the dpd CLI. For more commands see dpd -h.

$ dpd listen

or the node module

var dpd = require('deployd')
  // optionally specify which storage resource to use
  // currently only mongodb is supported
  // tell deployd to listen


The deployd api is entirely available over http. A basic http client is bundled.

var client = require('deployd').client.use('http://localhost:2304')
  , resources = client.use('/resources')
  , types = client.use('/types');

Node.js Module

The HTTP Client and node module api are the same.

var dpd = require('deployd').use('http://localhost:2304')
  , resources = dpd.use('/resources')
  , types = dpd.use('/types');


types.get([query], [callback]) or /types will return a description of the available resource types.


Create a collection

Give the collection a URL and some validation and documents will only be inserted if they pass validation.

function done(err, collection) { ... }{
  path: '/todos',
  type: 'Collection',
  settings: {
    title: {
      description: 'the title of the todo',
      type: 'string',
      required: true
    completed: {
      description: 'the state of the todo',
      type: 'boolean',
      default: false
}, done);

Add a document to the collection

client.use('/todos').post({title: 'feed the dog'}, function(err, todo) { || 'it worked! saved with _id', todo._id);


Creating Users

Register a user by POSTing a valid user object to /users.

var user = {
  email: '',
  password: 'foobar'

client.use('/users').post(user, function(err, user) { || 'registered user id: ' + user._id);


Login a user by POSTing a valid credentials object to /users/login over HTTPS. Once a user is logged in (has created a session) all requests as the user must be made over HTTPS. Resources that do not require a user can still be made over HTTP.

var credentials = {email: '', password: 'foobar'};

client.use('/users/login').post(credentials, function(err, session) { || 'logged in user id: ' + session.user._id);


Logout a user by making any request to /users/logout.

client.use('/users/logout').get(function(err) { || 'logged out current user');

Deleting Users

Remove a user by sending a DELETE request to /users?_id=<user._id>.

client.use('/users').get({_id: user._id}).del(function(err) { || 'deleted user id: ' + user._id);

Static Resources (Files)

POST, PUT, DELETE, and GET files over http. Only root authenticated or local requests (using the node module) are allowed to POST, PUT, or DELETE. All files are otherwise public.

Something went wrong with that request. Please try again.