ConcussionJS Core Platform

What is it?

ConcussionJS is a platform that enables you to create dynamic web applications with only HTML and CSS. You provide the HTML, and the platform generates everything from the client-side code to the REST APIs necessary to support your application.

Run ConcussionJS platform one of four ways

1. As a cloud platform (best way to start)

Step 1: Include the concussion.js javascript file in any of your HTML files. The file could reside on your file system (i.e., no need for a webserver). The simpler the HTML file the better to start off.

Step 2: Add the ConcussionJS attributes to your HTML page. It uses the same syntax as KnockoutJS

Step 3: Load your HTML page in a browser, preferably Chrome or Safari (should work on others, but tested mostly on aforementioned). You'll know it worked if you see the Concussion Admin banner in the upper right.

Note: The Concussion Admin banner only appears when you use it as an anonymous developer -- if you register on www.concussionjs.com via Google or Facebook the banner won't be displayed

Step 4: Click on the Concussion Admin banner to go to the administration page to add records

Step 5: Click the "New" button on the admin page to create a new record

Step 6: Set the field values for your new record and hit save. Then create 2 or 3 more records the same way

Step 7: Reload your HTML file to see the page populated with your newly created records

VOILA -- now you have database backed, dynamic web page without the headaches of traditional web development

Note : It may take up to 5 minutes for the startup routine to complete

3. Install via NPM

Detailed instructions below

4. Install from source

Detailed instructions below

Instructions to install via NPM (Option 3 above)

Pre-requisites

*Ubuntu 12.04 Linux or higher
(Note:only configuration tested, though it will likely work on other OS's in the debian family)

git

mongodb

nodejs

npm

g++

build-essential

python-dev

python-pip

redis-server

openjdk-6-jre-headless

We have also provided an install script for those starting from a fresh OS install. Refer to Optional Step 2 below

1. Install ConcussionJS Core Platform with NPM

From the shell:

$ sudo npm install concusionjs-core -g

The '-g' option will make the 'cjs' and 'cjs-proxy' bin-script available system-wide (usually linked from '/usr/local/bin'). Without the -g option you will be installing the concussionjs-core libraries in the current directory

IMPORTANT NOTE 1 : You have to install the library with the '-g' extension because the libraries have dependencies to the global npm root directory

4. Configure the cjs-proxy server (config.json)

cjs-proxy uses a Redis server to manage its configuration (and to share its state across the multiple workers). You can use the Redis server to change its configuration while it's running or simply check the health state of a backend.

The config file is under CONCUSSIONJS_CORE_DIR/node_modules/concussionjs-proxy/config/cjs_config.json

{

"server": {

"debug": true,

"accessLog": "/var/log/hipache_access.log",

"port": 80,

"workers": 1,

"maxSockets": 100,

"deadBackendTTL": 30

},

"redis": {

"port": 6379,

"host": "127.0.0.1"

}

}

server.accessLog: location of the Access logs, the format is the same as
nginx

server.port: Port to listen to (HTTP)

server.workers: Number of workers to be spawned (specify at least 1, the
master process does not serve any request)

server.maxSockets: The maximum number of sockets which can be opened on
each backend (per worker)

server.deadBackendTTL: The number of seconds a backend is flagged as
`dead' before retrying to proxy another request to it

6. Configure the cjs-proxy server (config.json)

cjs-proxy uses a Redis server to manage its configuration (and to share its state across the multiple workers). You can use the Redis server to change its configuration while it's running or simply check the health state of a backend.

The config file is under $HOME/concussionjs-core/node_modules/concussionjs-proxy/config/cjs_config.json

{

"server": {

"debug": true,

"accessLog": "/var/log/hipache_access.log",

"port": 80,

"workers": 1,

"maxSockets": 100,

"deadBackendTTL": 30

},

"redis": {

"port": 6379,

"host": "127.0.0.1"

}

}

server.accessLog: location of the Access logs, the format is the same as
nginx

server.port: Port to listen to (HTTP)

server.workers: Number of workers to be spawned (specify at least 1, the
master process does not serve any request)

server.maxSockets: The maximum number of sockets which can be opened on
each backend (per worker)

server.deadBackendTTL: The number of seconds a backend is flagged as
`dead' before retrying to proxy another request to it

Ensuring that learnability for first time users is sacred, and that time to learn a task is proportional to its complexity

Providing a way for people to interact with the platform at all points along the interest curve (e.g., "I just heard about the platform and am still skeptical" to "I love the technology and want to deploy it behind my firewall" to "I have drunk the kool aid, and now want to contribute to the codebase") that only requires a level of effort proportional to the interest level

Our Platform Roadmap

As the community grows and platform matures, the goal is to support increasingly sophisticated use cases, and ultimately support both enterprise-ready business applications and web-scale, consumer facing apps.

In addition, we believe that to become a dominant platform ConcussionJS must be able to:

Run on-demand and on-premises

Operate on-line and off-line

Deploy as both a multi-tenant and single-tenant solution

Deploy as a self-installable package, a virtual appliance, an AWS image, and even be run without deploying anything at all (e.g., a hosted JavaScript include + freely available backend services)

We are just at the beginning of this journey, and there is much to do to fully realize this vision. If you've been frustrated with the inefficieny of building apps and want to take up arms against the encumbant platforms, please join us on github and contribute.

Immediate areas we would like your help with include, but are not limited to, the following: