<commit_before># Rupert


Your friendly neighborhood node application watcher. [rupert](#) handles every piece of programming at the front edge, letting teams and developers quickly and efficiently write business code for browser clients and their backing HTTP APIs.

<img src="https://cdn.rawgit.com/DavidSouther/rupert/master/src/assets/logos/Rupert.svg" type="image/svg+xml" width="400px" />

When a developer today first comes across front-edge programming, it's daunting the number of technologies you need to know to build an application. From the bottom up, you have `docker`, `node`, `npm`, `grunt`, `mocha`, `karma`, `chai`, `express`, `mongo`, `mongoose`, `passport`, `oauth`, `cucumber`, `angular`, `protractor`, `bootstrap`, `firebase` and probably a couple I'm forgetting.  Rupert consolidates all of these into a single library. That library knows all the configurations, and all the little tips and tricks. It is configurable & extensible, with a well-documented API. It has a cookbook, which guides a new developer through the process while serving as a handy reference and reminder for a veteran developer. Rupert aims to be the go-to microservices stack, like Rails formalized the three-tier architecture.

## Getting Started

1. Create a new project.
  1. On Github, set the name and description. Generate a Readme and license.
1. Clone the project from GitHub.
1. Unpack the seed app:
  * `curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/plain.zip > plain.zip ; unzip plain.zip ; rm plain.zip`
    * or download and unzip manually (files are in the root of the zip, be warned).
    * See [the source directory here][plain_folder].
  * `npm init`
    * You will be prompted for a project name, license, etc.
    * While npm is smart in initialization, you can set a name, etc in your [npmrc][npmrc] if you create packages often.
  * `npm install`
1. Choose your frontend toolkit.
  * **Angular & Bootstrap** `npm install --save rupert-config-angular rupert-config-bootstrap`
  * **Ionic** (includes angular) `npm install --save rupert-config-ionic`
  1. The default package name is `rupert-app`, in `./src/client/index.jade`, `./src/client/main.js`, and other places. Edit this as needed.
  1. *(Coming Soon)* `npm run rename <NEW NAME>` to change all instances of the root module name.

[plain_folder]: https://github.com/DavidSouther/rupert-grunt/tree/master/plain
[npmrc]: https://www.npmjs.org/doc/misc/npm-config.html#config-settings

## Commands

**`$ node app.js`, `$ npm start`** Starts the application. Will print the root url path to the command line. Serves the API routes, as well as compiled client source folders. A livereload server is available, that triggers on css/js/template changes.

**`$ grunt`, `$ npm test`** Lints the code, and runs unit tests on the client and server.

* **`$ grunt watcher`** A watcher for the same.

**`$ grunt features`, `$ npm run features`** Runs any Behavior Features tests; first runs a pass of [features tagged][tagging] `@current`, then runs any *not* tagged `@broken`.

[tagging]: https://github.com/cucumber/cucumber/wiki/Tags

## Layout

With no additional configuration, Rupert expects a [modular layout](https://github.com/RupertJS/rupert/wiki/Project-Layout).

## Whirlwind Tutorial

You should probably skip the Project Layout documentation, and skip [straight to an example](https://github.com/RupertJS/rupert/wiki/Whirlwind-Tutorial).

## Cookbook

Some recipes are available:

* [Q: How do I add libraries to the compiled vendors.(js|css) files?](https://github.com/RupertJS/rupert/wiki/Cookbook:-Add-Vendor-Libraries)
* [Q: How do I configure Rupert's logging settings?](https://github.com/RupertJS/rupert/wiki/Cookbook:-Configure-Loggins)

## Docs

The full documentation on settings in `server.json` is [in the wiki](https://github.com/RupertJS/rupert/wiki/Config-API).

## Changelog

* **0.2.5** *2014-11-03* Improved algo for determining loadable stassets configs.'
* **0.2.4** *2014-11-03* Travis integration and testing.
* **0.2.3** *2014-10-24* Handle configuring and serving static assets.<commit_msg>Changelog bump.<commit_after># Rupert


Your friendly neighborhood node application watcher. [rupert](#) handles every piece of programming at the front edge, letting teams and developers quickly and efficiently write business code for browser clients and their backing HTTP APIs.

<img src="https://cdn.rawgit.com/DavidSouther/rupert/master/src/assets/logos/Rupert.svg" type="image/svg+xml" width="400px" />

When a developer today first comes across front-edge programming, it's daunting the number of technologies you need to know to build an application. From the bottom up, you have `docker`, `node`, `npm`, `grunt`, `mocha`, `karma`, `chai`, `express`, `mongo`, `mongoose`, `passport`, `oauth`, `cucumber`, `angular`, `protractor`, `bootstrap`, `firebase` and probably a couple I'm forgetting.  Rupert consolidates all of these into a single library. That library knows all the configurations, and all the little tips and tricks. It is configurable & extensible, with a well-documented API. It has a cookbook, which guides a new developer through the process while serving as a handy reference and reminder for a veteran developer. Rupert aims to be the go-to microservices stack, like Rails formalized the three-tier architecture.

## Getting Started

1. Create a new project.
  1. On Github, set the name and description. Generate a Readme and license.
1. Clone the project from GitHub.
1. Unpack the seed app:
  * `curl https://raw.githubusercontent.com/RupertJS/rupert-grunt/master/dist/plain.zip > plain.zip ; unzip plain.zip ; rm plain.zip`
    * or download and unzip manually (files are in the root of the zip, be warned).
    * See [the source directory here][plain_folder].
  * `npm init`
    * You will be prompted for a project name, license, etc.
    * While npm is smart in initialization, you can set a name, etc in your [npmrc][npmrc] if you create packages often.
  * `npm install`
1. Choose your frontend toolkit.
  * **Angular & Bootstrap** `npm install --save rupert-config-angular rupert-config-bootstrap`
  * **Ionic** (includes angular) `npm install --save rupert-config-ionic`
  1. The default package name is `rupert-app`, in `./src/client/index.jade`, `./src/client/main.js`, and other places. Edit this as needed.
  1. *(Coming Soon)* `npm run rename <NEW NAME>` to change all instances of the root module name.

[plain_folder]: https://github.com/DavidSouther/rupert-grunt/tree/master/plain
[npmrc]: https://www.npmjs.org/doc/misc/npm-config.html#config-settings

## Commands

**`$ node app.js`, `$ npm start`** Starts the application. Will print the root url path to the command line. Serves the API routes, as well as compiled client source folders. A livereload server is available, that triggers on css/js/template changes.

**`$ grunt`, `$ npm test`** Lints the code, and runs unit tests on the client and server.

* **`$ grunt watcher`** A watcher for the same.

**`$ grunt features`, `$ npm run features`** Runs any Behavior Features tests; first runs a pass of [features tagged][tagging] `@current`, then runs any *not* tagged `@broken`.

[tagging]: https://github.com/cucumber/cucumber/wiki/Tags

## Layout

With no additional configuration, Rupert expects a [modular layout](https://github.com/RupertJS/rupert/wiki/Project-Layout).

## Whirlwind Tutorial

You should probably skip the Project Layout documentation, and skip [straight to an example](https://github.com/RupertJS/rupert/wiki/Whirlwind-Tutorial).

## Cookbook

Some recipes are available:

* [Q: How do I add libraries to the compiled vendors.(js|css) files?](https://github.com/RupertJS/rupert/wiki/Cookbook:-Add-Vendor-Libraries)
* [Q: How do I configure Rupert's logging settings?](https://github.com/RupertJS/rupert/wiki/Cookbook:-Configure-Loggins)

## Docs

The full documentation on settings in `server.json` is [in the wiki](https://github.com/RupertJS/rupert/wiki/Config-API).

## Changelog

* **0.2.6** *2014-12-11* New logging configs, small stability improvements.
* **0.2.5** *2014-11-03* Improved algo for determining loadable stassets configs.
* **0.2.4** *2014-11-03* Travis integration and testing.
* **0.2.3** *2014-10-24* Handle configuring and serving static assets.
{'fraction_non_alphanumeric': 0.11686123480563244, 'fraction_numerical': 0.011674088337946805, 'mean_word_length': 4.456336178594879, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 9, 'https://': 20, 'lorem ipsum': 0, 'www.': 2, 'xml': 2}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4450428', 'n_tokens_mistral': 2585, 'n_tokens_neox': 2423, 'n_words': 972}