So, here is what I am thinking about for the architecture and dependencies and specifically what technologies to use. It should all be pretty standard but please comment.
Build and task management: gulp (which will require npm/node)
Code quality/style: jshint, editorconfig
Dependencies and package publishing: bower
CSS processing: less
This is probably not so needed, but does make things a bit easier.
CSS frameworks. Overall I don't think we need any.
DOM manipulation: jQuery
Overall, jQuery is kind of old school, but it doesn't seem like we need something like Ractive or Angular or some other heavier templating/dom library. And jQuery's ubiquitousness allows us to leverage some performance.
Resource loading: jQuery
Templating: underscore
Templating will be nice to have and easier for people to edit the HTML of the output. Underscore's templating is not great, but its really flexible and we get all the great underscore utilities from it
JS utility and older browser support: underscore
Google spreadsheet support. Tabletop?
I am not a huge fan of Tabletop and given how Google spreadsheet provides data (rate limiting and changing APIs), its often more trouble than its worth. Maybe we can provide a version that has Tabletop support or do something where its not a hard dependency?
Module loading. I don't think its necessary to use a module loader but we should support the big ones Browserify, RequireJS, etc. We may also want to provide it as a jQuery plugin; this should be simple enough.
Testing: qunit
Specifically with gulp-qunit so that tests can be run from the command line.
Continuous integration: TravisCI
Travis you have to pay to use with a private repo.
Browser testing: testling
Same restraints as Travis
I think that's it but I may have forgotten something.
So, here is what I am thinking about for the architecture and dependencies and specifically what technologies to use. It should all be pretty standard but please comment.
I think that's it but I may have forgotten something.