matehat/brewer.js — Issue #9: 0.5 Roadmap
Author: matehat
Created: 2012-02-22 14:39:37+00:00
State: open
Labels: enhancement

### Server

A nice enhancement to the project, given we're going for the "tasking" features (see last section) for 0.5, would be that Brewer.js be able to "serve" assets. Also, a local webserver could also provide a graphical interface to manage Brewer.js projects. There should therefore be a system Node.js daemon (and child worker processes that handle serving files and the graphical web interface for Brewer.js)

### Deployment

Deployment tasks (pushing to S3, (S)FTP, or Git) could be added to enhance the workflow.

### Templates

Different options could be available for using and manipulating templates:

* Brewer.js comes with included templates.
* The user could have a `.brewer_templates` directory in his/her home folder.
* The user could _use_ or _install_ templates from the web.

Templates should be prepared for different kind of projects that would benefit from Brewer.js (web site, static web site, Node.js project /w documentation).

### Assets _et al._

Interesting additions would be :

* Gzip compression ahead-of-time of CSS and JS bundles
* Image embedding in CSS
* Image spriting
* Docco documentation generation
* Jekyll/Gollum static site generation

Also, when specifying paths to assets, it would be nice to allow globs in addition to folders.

### Tasks

Every directive specified in a Brewfile could be viewed as expressions of __structure__ or of "things to do", _i.e._ __tasks__. `css`, `js` barely express structure. `less`, `stylus`, `coffeescript`, etc. express structure, but also tasks (compilation). `bundler` express mainly tasks, just like some of the new directives from the ideas given here, such as `serve`, `deploy`, etc. Keeping this in mind, one should be able to organize tasks into higher level ones, using a `task` directive.

[1]: http://documentcloud.github.com/jammit/