0.4.3 • Public • Published

Klei Generator Build Status

A Yeoman generator for generating awesome module or app boilerplates! MEAN-stack (all parts optional) with scalability in mind and with Grunt and Bower sweetness..

Differences from similiar generators

The Klei generator is built with scalability in mind. Which means that it doesn't have one file per object type (think AngularJS directives e.g) and neither one directory per object type, which is really common but not particularly good in the long run.

Instead the Klei generator advocates (and creates, particularly the subgenerators) one directory per module. Here's a great read on scalable code organization with AngularJS.

Great experience for developers

The goal with the Klei generator is to create a great, easy to use and maintainable project structure and development environment for web development with full stack Javascript.

Getting Started

Install Yeoman

$ npm install -g yo

Install the Klei Generator

$ npm install -g generator-klei

Install Bower

This is only needed if "Client APP" or "Stylesheets" are to be chosen in the generator.

$ npm install -g bower

Do the magic:

$ yo klei

Run the app:

$ grunt serve

Don't forget that your mongodb server should already be running! (if you chose MongoDB in the generator)

Run in production

The generator doesn't yet generate a fully production ready configuration following all best practices, but at least you must do the following steps:

Without REST API's

Build everything and run the static resource server (a connect server) with:

$ grunt serve:dist


First build everything for distribution:

$ grunt dist

Then run the server:

$ NODE_ENV=production node src/index.js

N.B. You should be using something like Forever or similar to keep the server up and running.

What can the Klei Generator do?

The Klei Generator asks you what type of module you want to build, then you pick the parts you want from:

What you'll get:

  • A scalable directory structure (Todo list example included)
    • Not one directory per object type, which doesn't scale well, but instead one per REST mount point (backend) and one per view (frontend)
  • A fully configured Gruntfile with livereload, serverreload, linting, concatenation, minification, testing etc.
  • Automounting of API routes using exctrl
  • No more editing of your html layout when adding scripts and stylesheets to your project, thanks to grunt-injector
    • This includes Bower installed components (which have a main section in their bower.json)
  • Both frontend and backend unit testing with Mocha and Chai!
    • Frontend tests is run with Karma
    • All necessary files are injected automatically into your karma.conf.js with the grunt-injector
  • Subgenerators to easy add new API's, etc. (see Subgenerator section below)
  • and more.. There's even more to come!

Try it out!




$ yo klei:api "<you new api name here>"

Or just:

$ yo klei:api

And follow the guide. The name you give to your new API will be camelized and used as: ./src/api/<newApiNameHere>/<newApiNameHere>.controller.js which in turn will be mounted at the url: /api/<newApiNameHere>.

The generator will ask if you want to create a new Mongoose model as well.

More to come...


Please feel free to contribute and help with building the best boilerplate for a great developer experience! I gladly accept pull requests!


MIT License

Package Sidebar


npm i generator-klei

Weekly Downloads






Last publish


  • joakimbeng