The simplest way to build an API.

An open source platform

Design, build, and scale APIs for web and mobile apps in minutes instead of days.

  

As easy as 1, 2... well, you get the idea.

Boilerplate illustration.

1. No boilerplate

With one command, your API is up and running. It's an empty canvas waiting for you to add Resources. No boilerplate code necessary.

Resources illustration.

2. Resources

Deployd APIs are built of plug-and-play resources, such as Collection, which can easily be added and defined through the deployd dashboard.

Dashboard illustration.

3. Dashboard

Add and manage your API's resources through an intuitive web-based dashboard.

Deployment illustration.

4. 1-step deploy

When it's time to deploy, easily deploy it yourself anywhere that can host a Node.js app and MongoDB.

Building blocks.

Flexibility through modularity

Deployd consists of a simple core library, with a modular API for extending your application. Thanks to deployd's modular architecture, it's easy to:

  • Quickly add custom client-facing Resources
  • Integrate third-party services or APIs into your app
  • Use any of the **17,000+** [node modules](http://npmjs.org) to extend your API

Deployd's simple Resource distribution feature makes it even easier to add modules others have developed to your own app. (Currently in-development)

Excellent work guys! Deployd is really exciting. You just removed 80% of the friction of developing a new app. Awesome.

@SonicCoder
Graph graphic.

Easy Graph Data

Collections of objects are nice, but worthwhile data is rarely one-dimensional. Relating and embedding objects in deployd is easy, and can be done with JavaScript inside of Collection events.

This event script:

//In GET event for /myposts/id
var post = this;
dpd.comments.get({postId: this.id},
  function(comments){
  post.comments = comments;
})

Generates this JSON output:

 //GET /myposts/abc123
{
  id: "abc123",
  title: "My blog article.",
  author: "Jeff Cross",
  content: "This blog article",
  created: 1330671600000,
  comments: [
    {
      commentor: "Ritchie Martori",
      created: 1330671600001,
      text: "Insightful.",
      postId: "abc123"
    }
  ]
}
Death.

Death to polling

Keep all of your client applications in sync and avoid needless refreshes with deployd's realtime capabilities. It's easy to listen for and respond to changes in your app, whether using the dpd.js library or another client that can support websockets.

// Listen for new posts
dpd.on('postCreated', function(post) {
    console.log(post);
});

With deployd's rich Events model, it's easy to validate, secure, and scope realtime messages to specific users or groups. See docs.

Check.

Flexible validation

Validating requests to your API couldn't be simpler. Just write simple JavaScript logic inside of Events to make sure the user is the proper role, and their request is valid.

// Example: On Post
// Don't allow non-admins to create items
if (!me.admin) {
  cancel("You can't do that!", 401);
}
See full Events documentation
Out of the box.

Out of the box user management

With deployd's included Users Collection, user signup and authentication...just works. It's also totally extensible. Add custom properties and roles to your users, and write custom Event scripts to control access to users of your app.

//Create a user
dpd.users.post({
  username: "jeffbcross",
  password: "secret"
}, onCreateUser);
//Login
dpd.users.login({
  username: "jeffbcross",
  password: "secret"
}, onLogin);
See User Collection Docs
JS.

JavaScript throughout

  1. Deployd is built on **Node.js** and **MongoDB**
  2. Custom server-side modules built with JavaScript
  3. Unified dpd.js client/server library
  4. Realtime capability through Websockets
  5. All data stored as JSON

*All API end points are also exposed as JSON over HTTP, so deployd easily integrates into other client applications (iOS, Android, robots, etc.)

Librarian glasses.

A library to end all libraries

The dpd.js library exposes a unified API to your app's resources to your client and server code. When you add a new Resource to your API, it's automatically available via dpd['resourceName']. For example, this code could be executed in the web browser or in an Event.

dpd.collection.get({id: 1}, console.log)
See full dpd.js reference

I think I'm in Love

@dan_tamas
Death.

Clients deserve advanced queries, too!

Perform queries against your Collections in the client that used to be reserved for secure server environments.

To get posts with a likes count of greater than 10:

GET /posts?{"likes": {"$gt": 10}}

Or with the dpd.js library, get posts within a category:

dpd.posts.get({
  category: {$in: ["food", "business"]}
}, console.log);
See all advanced queries in the docs

Deployd is a team-tailored experience.

Collaboration &
version control

The deployd dashboard makes it easy to manage your API's resources. But behind the scenes, everything done in the dashboard is reflected in intelligently-separated JSON & JavaScript files in the filesystem which can easily be version-controlled for better team collaboration.

Develop apps
locally

Develop your app locally, and deploy when you're ready. Deployd's local-dev-friendly design makes it easy to quickly build and test APIs as you develop your user interface. It also affords you the option to use the development environment of your choice to build custom Resources or write Event scripts.

It's open
source

Deployd is totally open source, under an Apache 2 license. Modify it as you'd like, and run it wherever you'd like. Want to see a feature? Create an issue or submit a pull request on the Github project.

Static file
support

Easily host your app's static HTML, JavaScript, images, and other static assets in your deployd app. Just put all your files in your app's /public directory and access them at the root of your localhost or remote domain.

Fork me on GitHub