Problems

Cluttered community

Despite an abundance of boilerplates and frameworks (“project starters”), the Node community lacks an up-to-date, opinionated, simple, modular, and minimal project starter (specifically for building RMVP’s with). Projects start off small and opinionated by one person, but then they become influenced by contributors and grow to unmaintainable proportions. Searching on Google and GitHub for “node boilerplates” or “node frameworks” yields hundreds of results.

Sails/Locomotive !== Express 4.x

Lack of automation and best-practices

Many project starters lack automation for testing and production deployments. Several ignore front-end best-practices such as having an asset pipeline (uglify/minify/optimize assets) and don’t utilize Bower, Bootstrap, Font Awesome, S3/CloudFront, clustering, and LESS.

App structure and code re-usability

Currently no frameworks nor boilerplates have implemented dependency injection using electrolyte (other than eskimo, with exception of Jared Hanson’s projects as far as I know.

Most applications structure their code by passing around global objects to exported functions, or simply have global variables (which is bad practice). For example, here’s how many some project starters are structured using global objects:

Solution

Eskimo

Install

Usage

Simple scaffolding

Built with commander and inspired by yo, the eskimo CLI provides a command create to scaffold a new RMVP and model, view, and controller commands to scaffold a new mongoose schema, jade template, and route middleware respectively.

Highly opinionated

In order to stay focused, one direction across the front-end and back-end must be taken with a project starter. Having support in the CLI for all templating languages, all ORM’s for building schemas, SQL, NoSQL, etc. is too much to maintain. However, support for swapping out anything that is default is required. One templating language (jade), one ORM (mongoose), one database (mongodb), and one CSS pre-processor (less) have been selected as initial candidates based off successful RMVP projects (see the Showcase) below.

Easily customizable

Don’t like using jade, less, passport, …? Simply delete them from the generated project starter files and remove them from package.json after running eskimo create [name].

Documented micro-examples

After you create a new project starter, what’s next? Need Facebook and/or Google Authentication in your app? Integration with Stripe for payments? Documentation and setup for a RESTful API? Using Sockets.io? Setup for zero-downtime reloads and automated deployment? Simply look in the /examples folder or file an issue if you’d like help. By simply having micro-examples as Readme files, users are forced to learn by reading and thinking (as opposed to simply copying/paste a complete working example).