Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Full featured widget-based RIA framework for node
JavaScript CSS

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.



feather is a full-featured widget-based web framework implemented in pure js. The main goal is to enable rapid development of powerful RIA-type apps (long running single-page applications).

Since this is meant to be a full-featured framework, there will likely be some dependencies (like jQuery and CouchDB, for example). This is not intended to be a bits-and-pieces library where each concern is its own standalone module. Where possible (and sensible), we will work on modularizing certain things, but just keep in mind that that is not a primary goal of the project.

In the end, the intent is to use feather to create a browser-based development platform where real-time collaboration is first-class. Short of that


  • Fill
    • This
    • In

Setup and Contribution Instructions

First of all, not to be too obvious but this project requires node.js. Specifically, we intend to support node.js on *nix platforms. I assume the Windows/cygwin flavors of node builds should also work but we aren't going to go out of our way to support it.

Note: these instructions are intended for use during the early stages of the project, until we stabilize things a bit and have a nice build script or npm package to give you.

  • Assumptions
    • you have a github account and understand git and github basics (forking, cloning, etc.)
    • you are running node v0.4.x
    • you have both npm and nvm installed ( (
    • Since this is still very early, I'm also assuming if you're going through these instructions it's because you are a contributor to the project. Thus, I'm going to include some workflow instructions.
    • This is obviously not a requirement, but for sake of convenience I'm basing paths of the following root folder (just because that's our internal convention): ~/mainline
  • Setup
    • first, fork the project (via your github account) from
    • clone locally (and recursively to auto pull the submodules), and remember to add the remote to 'upstream' as explained here:
      • $: cd ~/mainline
      • $: git clone --recursive [your-fork-url]
      • $: cd feather
      • $: git remote add upstream
      • if you forget the --recursive argument when cloning the repo you can also run the following commands
      • $: git submodule init
      • $: git submodule update
    • Feather relies on several dependencies. Most are installed by the setup script mentioned below, but in case any fail, they are listed here. DO NOT RUN THESE MANUALLY UNLESS FAILS!
      • Dependencies (this list will change, so please continue to check it, especially as a first place to look if you do an update and run into errors that look like missing dependencies) (NOTE: yes, we plan on create a complete npm-encapsulated package to ease this pain, but for now we're still playing with things too much)
        • $: npm install connect (version 1.4 is required)
        • $: npm install jsdom
        • $: npm install
        • $: npm install cradle
        • $: npm install yuitest
        • $: npm install daemon
        • $: npm install colorize (Added 5/10/2011; used by the CLI)
      • In featherdoc app
        • $: mkdir node_modules (If this step is omitted, npm will install it in feather's copy of node_modules rather than create the folder for you.)
        • $: npm install node-markdown (required for the featherdoc app)
    • Setup
      • $: bin/ This will create the FEATHER_HOME environment variable in your user's ~/.bashrc file if it exists. Otherwise it will add them to your ~/.profile file. It will also add feather's bin dir to your path. Finally it will attempt to install all of the dependencies of the framework.
      • open ~/.bashrc and ensure the PATH var in Feather Vars section looks like "export PATH=$FEATHER_HOME/bin:$PATH"
      • At this point, you should be able to run "feather help" and get the usage of the CLI.
  • Data
    • 3/15/2011: as of today, the blog app now requires CouchDB.
      • install couch via the instructions for your OS (
      • from Futon (http://localhost:5984/_utils/), create a db called "featherblog"
      • if couch is not installed on localhost, edit app.js and modify the hostUrl value in the data.appdb variable
      • start the blog application (See Starting the Sample App below)
      • browse to http://localhost:8080/ and press the Go button where it says "Import the database"
      • refresh the page in your browser. You should now see 3 sample blog entries. If you click on them they should expand to show the full blog post.
  • Starting the Sample App
    At this point you should be able to run the blog app and hit it from a browser:
    • $: feather run ~/mainline/feather/blog
    • in a browser: http://localhost:8080/ (replace localhost with the appropriate IP address or hostname if running on a VM... obviously :P)
Something went wrong with that request. Please try again.