# core.io documentation

core.io provides a structure to quickly prototype Node.js applications of any type, providing a set of guidelines and conventions to ease development.

In a way core.io aims to be a workflow rather than a framework by providing a common application structure regardless if the application is web, desktop, or data focused.

core.io provides basic building blocks which are useful in any context and help with command tasks like configuration management, logging, dependency management and more basic needs of most applications.

The heart of core.io is the application context, which you can extend directly with custom logic or indirectly with modules.

Modules are intended to encapsulate code and make it portable. They also serve as glue to integrate libraries like Socket.IO or AMQP into your project.

Following simple conventions on how files are named and where those files are placed core.io will auto-load, auto-configure, and auto-wire components always leaving you the choice to override defaults or create custom modules to replace core functionality.


class MyClass {
constructor(options){
  options = extend({}, MyClass.DEFAULTS, options);
  if(options.autoinitialize) {
      this.init(options);
  }
}

init(options={}) {
  extend(this, options);
}
}

MyClass.DEFAULTS = {
autoinitialize: true;
getName: function() {
  return this.name;
},
name: 'MyClass'
}