generator-gulp-of-drano
Version:
Yeoman generator for an angular.js site. CoffeeScript, stylus, jade, gulp.js. Bootstrap, angular-strap, nib, angular-ui-router. Heroku + s3 deployment tasks included.
119 lines (80 loc) • 4.16 kB
Markdown
# <%= projectName %>
Web interface for databox.
## Requirements
|name | installation|
|---|---|
|[git](http://git-scm.com/)| [`brew`](http://brew.sh/) `install git` |
|[nodejs](http://nodejs.org/)| [`brew`](http://brew.sh/) `install node`
|[xquartz](http://xquartz.macosforge.org/landing/)| [`brew cask`](https://github.com/caskroom/homebrew-cask) `install xquartz` |
|[cairo](http://cairographics.org/)| [`brew`](http://brew.sh/) `install cairo`|
|[git-crypt](https://www.agwa.name/projects/git-crypt/)| [`brew`](http://brew.sh/) `install git-crypt` |
## Installation
1. `npm install` - install all server-side deps
1. `bower install` - install all client-side deps
### Encrypt secret keys
Are you the creator of this repo? If so, encrypt the `config/*.yml.example` files using [git-crypt](https://www.agwa.name/projects/git-crypt/).
1. `git-crypt keygen ~/path/to/key` - generate a key for this project
1. `git-crypt init ~/path/to/key` - initialize this repo for git-crypt
1. `cp config/*.yml.example config/*.yml` - copy encrypted secrets file to git-ignored file
### Decrypt secret keys
Have you just been added to this repo? If so, decrypt the `config/*.yml.example` files using [git-crypt](https://www.agwa.name/projects/git-crypt/).
1. Get the key from the project owner and save it to `~/path/to/key`
1. `git-crypt init ~/path/to/key`
1. `cp config/*.yml.example config/*.yml` - copy encrypted secrets file to git-ignored file
### Etc.
#### Cairo
Is $PKG_CONFIG_PATH defined? (check using `echo $PKG_CONFIG_PATH`). If not, add the value to your ENV:
~~~bash
echo "export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig" > ~/.bashrc
~~~
Replace `.bashrc` with your relevant shell rc file (`.zshrc`, `.fishrc`, or whatever).
---
## Usage
### Start Dev Server
`gulp` - broadcast dev server to [localhost:<%= devPort %>](http://localhost:<%= devPort %>). use livereload for automatic refresh.
### Testing
#### Unit Tests
Unit tests use mocha + chai + sinon.
* `gulp test:e2e:once` - run all tests in `test/unit/**/*.coffee`.
* `gulp test:e2e:watch` - same as above, re-runs tests as they change.
#### E2E Tests
This project uses [protractor-ci](https://github.com/lynndylanhurley/protractor-ci) for E2E tests.
* `gulp test:e2e:once` - run all tests in `test/e2e/**/*.coffee`. bypasses proxy record/playback.
* `gulp test:e2e:watch` - same as above, re-runs tests as they change.
* `gulp test:e2e:record` - records all requests to external APIs for later playback.
* `gulp test:e2e:playback` - use mocked API requests for test suite. Useful for when API is unavailable.
* `gulp test:e2e:ci` - using the mocked API, run tests against Sauce Labs. This is used by the CI test runner.
---
### Deployment
This assumes the following, where `ENV_NAME` is the name of the target `NODE_ENV` (`production`, `staging`, etc.)
1. An heroku app exists, and its git remote is named `ENV_NAME`
1. The heroku app has its `NODE_ENV` set to `ENV_NAME` (using `heroku config:set`)
1. You have decrypted the `config/ENV_NAME.yml.example` file and copied its contents to `config/ENV_NAME.yml`.
1. There is an s3 bucket config defined in `config/ENV_NAME.yml`. see `config/production.yml.example` for an example configuration.
#### Push to heroku `production` env
`gulp release`
#### Push to heroku `staging` env
`gulp stage`
---
## Stack
This app includes the following:
#### Languages
* [jade templates](http://jade-lang.com/)
* [sass stylesheets](http://sass-lang.com/)
* [coffeescript](http://coffeescript.org/)
#### Libraries
* [bootstrap](http://getbootstrap.com/)
* [nib](http://visionmedia.github.io/nib/)
* [jquery](http://jquery.com/)
* [angularjs](http://angularjs.org/)
* [angular-ui router](https://github.com/angular-ui/ui-router)
* [angular-strap](http://mgcrea.github.io/angular-strap/)
* [lodash](http://lodash.com/docs)
* [modernizr](http://modernizr.com/)
#### Testing
* [karma](http://karma-runner.github.io/0.12/index.html)
* [protractor](https://github.com/angular/protractor)
* [mocha](http://visionmedia.github.io/mocha/)
* [chai](http://chaijs.com/guide/installation/)
* [sinon](http://sinonjs.org/)
---