Home

Awesome

IC.js

InterCity.js - express.js-based, modular and lightweight NodeJS framework/structure

Main components:

Installation

Development Environment:

  npm install

Production Environment:

  npm install --production

Running server (CLI options)

Setting Port to listen on (default=8080):

  PORT=8080 node app.js

Enabling Server logs (disabled by default):

  DEBUG=IC node app.js

Setting Environment (default=development):

  NODE_ENV=<production|development> node app.js

You can mix options, examples:

  NODE_ENV=production PORT=80 DEBUG=IC node app.js

Your app in the browser

You can preview your app under http://localhost:8080 address unless you specified different port.

Reload app automatically every time you change the code

The app doesn't reload itself automatically. To avoid overhead with restarting the app manually every time you change your code, you can use nodemon tool. Simply run following commands:

sudo npm install -g nodemon

In your app directory:

DEBUG=IC nodemon app.js

Extending the application

Extending Views

Since Nunjucks support builtin filters as well as custom filters, you can roll out your own filters easily by creating JavaScript file in the views/filters directory.

  // Location: config/filters/nl2br.js

  module.exports = function (nunjucks) {

    /**
     * Replaces all occurences of newline with <br> tags
     *
     *   Sample Usage:
     *
     *     {{ 'Hello\n\nWorld' | nl2br }} -> Hello<br><br>World
     *
     */
    return function (string) {
      return new nunjucks.runtime.SafeString(string.replace(/\n/g, '<br>'));
    };

  };
}

The code above would create nl2br filter that will be globally available in all your nunjucks templates. Filter is nothing else than the name of the file without extension, e.g. nl2br.js -> nl2br.

Contributing

Feel free to contribute or contact me at contact@maciejsmolinski.com with any questions