StackPointCloud Community

StackPointCloud provides tooling for DevOps and Kubernetes.

This was a community website created to accompany the DevOps and Kubernetes tools that were built by StackPointCloud (now NetApp).

Users could come and contribute to the site, by asking and answering questions or publishing tutorial content depending on their role.

Here is how this project was built:

  • For this site, we opted to use the PolymerJS framework which was quite new at the time but offered an interesting look at component based design (with WebComponents) and even had an extensive library of pre-built widgets that adhered to Google's Material Design
  • To complement the client, the server-side infrastructure consisted of a REST server running Node, with MongoDB acting as the database. These two were tied together with Mongoose.
  • The client and the server were both tied together using Docker Compose and Nginx was added to act as a reverse proxy for the two.
  • For the client and server, unit and integration tests were carried out using a combination of Chai, Mocha and Supertest.
  • The client side was built using Gulp as the task runner, and styling was done with SASS. Deployments were carried out using CircleCI and Docker Compose.

Part of the challenge of working with a new framework is when you run into new and undocumented problems that you need to figure out. This project was created at a time when single page applications were just starting to become mainstream, and the only ones in wide use at this time were AngularJS and React.

The biggest challenge was ensuring fast loading performance. By default, a single bundle of Javascript was being delivered and this was huge, even when it was compressed. Older browsers like IE would take several seconds to parse and then execute this.

To get around this, I had to rework Gulp to implement my own tree-shaking set up, so as to only load what needed to render the page as opposed to the entire application. Something like webpack would take care of this nowadays.