Clout Javascript Framework
The Vision
Having developed many server-side services using a wide range of enterprise and open-source frameworks, I realized all of them had one thing in common. They all pushed you to use certain technologies in certain ways.
It all came down to going back to the basics and using express to build any project. Each project had slight variations in packages and thus came the concept of clout-js. A de-coupled event based frameworks that allows you to use whatever technology you would like to use. Modules can be packaged up and re-used in different projects. Even the core-modules such as starting the server could be replaced by writing an override.
Install
$ npm install clout-js@beta --save
Development
These commands should be run in this directory.
Run tests
$ npm run test
$ npm run test:watch
Create documentation
$ npm run gendoc
Run application with this instance
$ APPLICATION_PATH=<clout-js-applcation> npm run start
Usage
const clout = require('clout-js');
clout.start();
clout.on('started', () => {
['https', 'http'].forEach((key) => {
let server = clout.server[key];
if (server) {
let port = server.address().port;
console.info('%s server started on port %s', key, port);
}
});
});
Clout Application Loader default paths
The following folders are default application searchpath.
Directory | purpose | |
---|---|---|
/conf | contains configuration w/ support for NODE_ENV | |
/apis | contains apis for the application | Create API Endpoint |
/hooks | hooks which can be invoked before an api | |
/models | contains models (native support for sequalize) | |
/public | public assets folder | |
/controllers | contains controllers for application |
Enviromental Config
NODE_ENV=development npm run start
You can load different configuration files depending on the env variables. For example, the usage of NODE_ENV=development
(default) would load the following configuration files into the application;
conf/default.js
conf/**.development.js
conf/development.js
Another example is NODE_ENV=production
which would load the following files;
conf/default.js
conf/**.production.js
conf/production.js
Clout-JS Module List
package-name | description |
---|---|
clout-redis-session | Clout module to leverage Redis for sessions |
clout-passport | Clout module to implement passport |
clout-parse | Parse module |
clout-mongoose | Clout module to leverage mongoose for models |
clout-18n | Clout module to implement i18n |
clout-socket-io | Clout module to leverage socket.io |
clout-sequelize | Clout module to leverage sequelize for models |
clout-flash | Flash message middleware module for Clout-JS |