polymesh

Node.js application container

npm install polymesh
1 downloads in the last week
4 downloads in the last month

Polymesh (Steelmesh 2.0)

Polymesh is a major rethinking from the original Steelmesh, while maintaining the original core goal of providing a repository for private node applications.

The general design rules of Polymesh are:

  • To use LevelDB for binary application storage.
  • To use npm command-line tooling for publishing, using the registry directive in publishConfig section of package.json files to control the publication endpoint.
  • To provide an easy pathway for people to use nginx to front their node apps if this is what they want.

Keeping the goals to those above, and removing the use of CouchDB will that Polymesh has a significantly lighter installation footprint than the previous version.

Getting Started developing Polymesh Applications

Developing a polymesh application is a consistent experience with developing a standard node application that you intend to publish using npm. The only difference is that you need to include a target polymesh registry in your package.json configuration file. For example, consider the following:

{
    "name": "hello-world",
    "description": "An application that says hello world",

    "dependencies": {
        "express": "~3.2.5"
    },

    "publishConfig": {
        "registry": "http://my.server.com/"
    }
}

You then build your application using the workflow you are most familiar with. When it comes time to publish you simply run npm publish as you do for your other open source projects and your application will be uploaded to the target polymesh registry.

What Happens When I Deploy a Polymesh Application?

In the original version of Polymesh a lot of magic happened, however, Polymesh 2.0 simplifies the process and defers responsibility of stopping and restarting applications to other components. The primary responsibility of Polymesh 2.0 in your stack is to:

  • Extract the application update to a preconfigured location, with an appropriately named folder using the application name and semantic version.
  • Install any required NPM dependencies specified in the package.json file for the application.
  • Provide a notification that a new application version has been received and is available for use.

The notification is completed using a redis pubsub channel (polymesh by default)which signals to other processes that an application update has been captured. An application monitoring the channel would then be aware that particular action needs to be taken to given the update.

npm loves you