.. Licensed under the Apache License, Version 2.0 (the "License"); you may not
.. use this file except in compliance with the License. You may obtain a copy of
.. the License at
..
..   http://www.apache.org/licenses/LICENSE-2.0
..
.. Unless required by applicable law or agreed to in writing, software
.. distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
.. WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
.. License for the specific language governing permissions and limitations under
.. the License.

.. _fauxton/install:

============
Installation
============

Recent versions of `node.js`_ and `npm`_ are required.

.. _node.js: http://nodejs.org/
.. _npm: https://npmjs.org/doc/README.html

Get the source
==============

Clone the CouchDB repo::

    $ git clone http://git-wip-us.apache.org/repos/asf/couchdb.git
    $ cd couchdb

Fauxton Setup
=============

Install all dependencies::

    couchdb/ $ cd src/fauxton
    couchdb/src/fauxton/ $ npm install

.. note::
    To avoid a npm global install add ``node_modules/.bin`` to your path::

        export PATH=./node_modules/.bin:$PATH

    Or just use the wrappers in ``./bin/``.

    Development mode, non minified files::

        ./bin/grunt couchdebug

    Or fully compiled install::

        ./bin/grunt couchdb

Dev Server
==========

Using the dev server is the easiest way to use Fauxton, specially when
developing for it::

    grunt dev

Deploy Fauxton
==============

Deploy Fauxton to your local CouchDB instance:

    ./bin/grunt couchapp_deploy

The Fauxton be available by `/fauxton/_design/fauxton/index.html
<http://localhost:5984/fauxton/_design/fauxton/index.html>`_

Understanding Fauxton Code layout
---------------------------------

Each bit of functionality is its own separate module or addon.

All core modules are stored under `app/module` and any addons that are optional
are under `app/addons`.

We use `backbone.js`_ and `Backbone.layoutmanager`_ quite heavily, so best to
get an idea how they work. Its best at this point to read through a couple of
the modules and addons to get an idea of how they work.

Two good starting points are `app/addon/config` and `app/modules/databases`.

Each module must have a `base.js` file, this is read and compile when Fauxton is
deployed.

The `resource.js` file is usually for your ``Backbone.Models`` and
``Backbone.Collections``, `view.js` for your ``Backbone.Views``.

The `routes.js` is used to register a url path for your view along with what
layout, data, breadcrumbs and api point is required for the view.

.. _backbone.js: http://backbonejs.org/
.. _Backbone.layoutmanager: https://github.com/tbranyen/backbone.layoutmanager

ToDo items
----------

Checkout `JIRA`_  for a list of items to do.

.. _JIRA: https://issues.apache.org/jira/browse/COUCHDB/component/12320406
