Web App Toolkit: New Project Thoughts

Hey Everyone,

I’m thinking about building a series of modules and/or CFBuilder add ons to facilitate a more rapid web app development workflow. I would love some input from the community on what would work well for people AND if anyone is interested in collaborating on this open-source project, please let me know.

I know there are a variety of existing modules that might help out.

Some background: I have been using script-based CFCs, CF9 w/ ORM, and Backbone.js to build single-page web apps. Each app that I have made has required a lot of repetitive tasks before really writing any unique code. I noticed that much of this could be template-driven.

The goals of my project are as follows:

Support CoffeScript compiled to JavaScript (http://jashkenas.github.com/coffee-script/)
Support SASS for easier/more consistent CSS (http://sass-lang.com/)
Build in auto-minify/compression of CSS/JS
Automatically cache minified assets
Auto-generated RESTFUL handlers for ORM Entities
Auto-generated Backbone.js/CoffeeScript Models/Collections

Thoughts, suggestions, comments, questions, etc?



I think your idea is spot on.

The first four items look like they should be part of a build process instead of occurring at run-time and the last two look like something that could be accomplished with http://cfcgenerator.riaforge.org/ – although I use Excel :).

I don’t know that ColdBox modules are the right place… but, I’ll keep thinking about this problem.


Part of the reason I like having it integrated into runtime is when I am developing, I like having the ability to simply reload a page without having to produce a new “build”.

I’m thinking about having a WebAssets Plugin which would handle auto-minifying/compressing CSS/JS, compiling SASS/CoffeeScript, and caching. Have configuration that allows you turn off caching for development. Luis already has a minify plugin that would be a great base to use for this.

The auto-generation of the Restful handlers and backbone models/collections would definitely need to use a build tool. Do the vast majority of people on this list use CFBuilder or do many people use CFEclipse? If everyone (or almost everyone) uses CFBuilder, I can do a CFBuilder extension, otherwise, I might just make an ANT script with a CFBuilder front end. (if that even makes sense).

Any input and suggestions are welcomed. I may not take everyone’s advice, but I’ll certainly consider it! :slight_smile:



This is why ant is so powerful, I have an ant script that actually compiles my code up and deploys it. Now it can either do it a number of ways and the best is to do nothing until you are ready.

For example, when developing locally I do what you do and test away and make changes, but the moment I want to test it in a staging environment, I can then run the ant script to create that build for me.

And it also does all the stuff you are trying to achieve as well, but I also have the luxory of a second machine I can use as a staging server now. Before I had to switch Virtual Machines, or have them both running depending on what other applications I need, but with 12gig of memory in a machine I can afford to be generous.

We are currently evaluating Compass framework for our UI needs.


It would be nice to check the idea.

I also would suggest to check the Mustache project which has also a CFC.


I am also not a big fan of CoffeeScript. Totally personal. :slight_smile:


Oğuz Demirkapı


I haven’t really investigated Mustache fully, but looking at the demo how is it any different than just using cfoutput?

The syntax looks very similar to AngularJS - http://angularjs.org/, which is very powerful and has some similarities to other JS frameworks such as Backbone.JS



Check this also: http://wiki.coldbox.org/wiki/Projects:CFSASS.cfm

Luis F. Majano
Ortus Solutions, Corp

ColdBox Platform: http://www.coldbox.org
Linked In: http://www.linkedin.com/pub/3/731/483
Blog: http://www.luismajano.com
IECFUG Manager: http://www.iecfug.com

Social: twitter.com/lmajano facebook.com/lmajano


These resources may help you: