Posted Tuesday, January 14, 2014
My employer is hosting an internal Node.js hackathon. I’m organizing it, but I’ll also be participating since it’s small enough that the logistics side is not going to take up all of my time. Everyone is charged with producing a Node app within 11 hours, and presenting to the group after that. For my project, here’s what I’ve decided to go with. There are a few options out there for external commenting systems. You’ve probably heard of the big ones - Disqus and Livefyre. There are a handful of others, including Viafoura, Vicomi, and Instant Debate, but it’s a space that doesn’t see a lot of differentiation between the players. I propose, as my project, a commenting system that doesn’t just facilitate discussion about a particular page, it uses meta information about that page to suggest similar discussions going on elsewhere on the site. Yeah, it’s a little bit of a walled garden in that it focuses on only one particular site, but for commercial applications that seems ideal.
I decided to go with RethinkDB as my datastore of choice. It’s very new and hence not production-ready, but its ease of use and blazing fast interaction suit this project well. The big problem to watch out for here is that Rethink loves eating up RAM with the current cache manager.
My focus lately has been on ReactJS by the Facebook team. It’s documented better than AngularJS, which was my go-to framework before this. It also has a more granular way of handling data binding that speeds up everything when dealing with a lot of elements on one page.
Definitely going to be using SockJS. Socket.io’s on its way out.
Express.js. I would love to use the newer, promise-driven Koa.js, but it relies on an unstable version of Node.
Since the advent of Gulp, I have completely ceased to use Grunt. Gulp is just a better system, period. The only reason I’ve found to still use Grunt is if you need to use Yeoman to scaffold a project. So, with all that in mind, I’m using Gulp for this project.
I use Bower. It has its issues (security?), but I’ve never used anything else and have no real reason to find another option.
Sass. I’ve used both LESS and Sass, and Sass seems more reliable and predictable to me.
If I have time to do unit testing (yes, yes, I know), I’ll be using Mocha. For assertions, I’ll use Chai. To handle checking test coverage, I’ll use CoverJS.
I’ll be using RequireJS for sane modularization, Uglify for minification, and Twitter Bootstrap to style the whole thing quickly.