A modular JavaScript MVC framework


Besides being MVC in JavaScript, Shipyard is explictly modular, easy to test, and utilizes the power of Syncs and View binding.

Get it now!

Take a look at the tutorial to make your first application, or the obligatory example Todo app.

Then, install the latest stable version using npm install shipyard, or grab the dev version from GitHub:

$ git clone git://
$ cd Shipyard
$ npm link
$ shipyard test

What is Shipyard?

Framework-wide Goals

  1. Modularity: Be able to declare dependencies inside the code, and not be bothered with managing them during development or deployment.
  2. Testability: Be easily testable, using a node test runner.
  3. JavaScript: Not reliant on any other language. Build scripts will use JavaScript. The End.

Model Goals

  1. Fields: Powerful fields come alive from simple JSON.
  2. Sync: Easily specify multiple locations the data should sync to.

View Goals

  1. Binding: Views can automatically update themselves when related properties change in a Controller or Model.
  2. DRY: Views are easily extendable.
  3. DOMs Away: The DOM is a layer away. Instead, you get a nice interface, with contextual events.
  4. Templates: The underlying layer of Views uses Templates to render, if you're a control freak.

Controller Goals

  1. Boilerplate: Attempt to remove typical boilerplate of attaching Models to Views with validation in between.


The code is available on GitHub, the test suite is connected to TravisCI, and you can play with it on jsFiddle.

Bugs and feature requests live at GitHub Issues, and you can send tweets to @shipyardjs.