Skip to content


Subversion checkout URL

You can clone with
Download ZIP
AngularJS Starter App Providing User Management
Pull request Compare This branch is 55 commits behind scotch:master.
Fetching latest commit...
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


AngularJS Starter App Providing User Management

CAUTION: Sapling is in the very early stages of development. Things are likely to change in ways that are not backwards compatible

AngularJS + Brunch

Client Features:

  • User Account management
  • User login
  • User signup
  • Coffeescript / Less / Sass / SCSS / Stylus automatically compiled on save
  • auto-reload during development saves you from manually refreshing the page
  • Javascript / CSS minification for production
  • testacular integration for unit tests
  • Bootstrap integration with themes.


Sapling is intended to be used with a backend, but comes with a basic NodeJS / Express server to get your started. Please visit the backend section for a complete list of backends.

  • git clone to clone the sapling repository
  • cd sapling
  • ./scripts/ to install node packages
  • ./scripts/ to compile javascript and css


Starting Sapling (client)

  • ./scripts/ to start Brunch compiling Note: in the future this step will be removed

Starting Express (server)

*npm start Then navigate your browser to http://localhost:3000



  • If you would like to write your test in coffeescript run ./scripts/ in a separate window.
  • Testacular will run tests on save. To insure that changes are saved be sure to have `./script/ running in the console.
  • To changed the target browsers modify your /test/conf.js file E.g. browser = ["ChromeCanary", "Firefox"]
End to end testing



  • ./scripts/ to minify javascript and css files for production use.


Common issues

EMFILE error

  • EMFILE means there're too many open files. Brunch watches all your project files and it's usually a pretty big number. You can fix this error with setting max opened file count to bigger number with command ulimit -n (ulimit -n 10000 should be enough).



Receiving updates from upstream

When we upgrade sapling's repo, you can just fetch the changes and merge them into your project with git.

git pull origin master

Directory Layout

_public/                  --> Contains generated file for severing the app
                              These files should not be edited directly
app/                      --> all of the files to be used in production
  scripts/                --> base directory for app scripts
    controllers.js        --> application controllers
    directives.js         --> custom angular directives
    filters.js            --> custom angular filters
    services.js           --> custom angular services
  assets                  --> a place for static assets. These files will be copied to
                              the public directory un-modified.
    font/                 --> [fontawesome]( rendering icons
    img/                  --> image files
    partials/             --> angular view partials (partial html templates)
    index.html            --> app layout file (the main html template file of the app)

  styles/                 --> all custom styles. Acceptable files types inculde:
                              less, sass, scss and stylus
    themes/               --> a place for custom themes
      custom/             --> starter theme **NOTE the underscore (_). Files begining with an
                              underscore will not automatically be compiled, they must be imported.
        _override.less    --> styles that should beloaded after bootstrap.
        _variables.less   --> bootstrap variables to be used during the compilation process
    app.less              --> a file for importing styles.              --> application definition and routes.             --> application bootstrap

node_modules              --> NodeJS modules

scripts/                  --> handy shell scripts         --> compiles jade to html        --> compiles coffeescript test to javascript          --> compiles files and watches for changes                 --> installs node modules           --> compiles and compresses files for production use               --> runs a development server at `http://localhost:3333`                 --> runs all unit tests
server/                   --> this directory contains the Express server. If you are using your own backend you
                              may safely delete this directory.
  **DETAILS** Coming Soon!
test/                     --> test source files and libraries
  e2e/                    -->
    scenarios.js          --> end-to-end specs **NOT WORKING YET**
    controllers.spec.js   --> specs for controllers
    directives.spec.js    --> specs for directives
    filters.spec.js       --> specs for filters
    services.spec.js      --> specs for services
    angular/              --> angular testing libraries
      angular-mocks.js    --> mocks that replace certain angular services in tests

  scripts/                --> angular and 3rd party javascript libraries
    angular/                  files are compiled to `vendor.js`
      angular.js          --> the latest angular js
      angular-*.js        --> angular add-on modules
      version.txt         --> version number
    bootstrap/            --> for responsive layout
    console-helper.js     --> makes it safe to do `console.log()` always
    jquery-1.7.2.js       --> for use with bootstrap-collapse
  styles/                 --> sapling / sapling themes and 3 party CSS
    bootstrap/            --> boostrap files - **NOTE** the underscore prevents the
      _*.less                 files from automatically being added to application.css
    sapling               --> extends boostrap
    themes                --> themes to extend Bootstrap
      default             --> the default bootstrap theme
      sapling             --> supplemental theme
      smokey              --> supplemental theme


For more information on sapling please check out

Something went wrong with that request. Please try again.