Hercules Pixi.js XRE Receiver - Code updates and refactoring

Register
Submit a solution
The challenge is finished.

Challenge Overview

We have an existing application that is the client in a client-server application.  The client handles input and drawing based on commands sent from a server using the XRE protocol.

The client is currently implemented in Javascript, runs in a web browser, and uses http://www.pixijs.com/ for WebGL and Canvas rendering.   The code has gone through many, many iterations over a number of years and needs to be modernised a bit to clean it up and get it ready for optimisation.

In the forum is the existing code for the Pixi receiver, as well as a configuration to use locally.  This configuration will allow you to load up the Pixi receiver and see a production interface rendered on the screen, with a virtual remote control you can use to control the input.

Refactor codebase

This codebase is old and needs to be updated to the most recent Javascript standards.

* Make sure the dependencies in the package.json are the latest versions
* Remove unused / redundant code
* Make sure all dependencies actually apply to the project
* If a dependency is outdated or could be replaced by something better, update the code appropriately
* Remove grunt dependencies
* Minify through webpack instead
* Usage of the latest ES6 constructs and features
* Refactor the code as appropriate, making sure it follows best practices

Removal:
 

These features must be removed completely from the codebase:

* HTTP Auth configuration and code
* Image proxy configuration and code
 

Update Javascript to ES6 / Airbnb standards

We want to update the Javascript to ES6 and use the linters from Airbnb:

https://github.com/airbnb/javascript

Goal

The goal from this challenge is to transform the existing code into a more modern, formalised codebase that takes advantage of ES6 and new functionality available in Javascript and the latest browsers.   A challenge after this one will look at performance of the codebase, so it's important that we start from a good, stable base layer of code that's been cleaned up and makes sense.

Note: We don't want to see any new bugs introduced, so please make sure the new code works the same way as the old code.

Deployment

Currently, the code is just deployed to Heroku by pushing the latest updates from Git.  Heroku handles all the webpack and other packaging steps.  This needs to remain in place.  All configuration is done through environmental variables set on Heroku.  Samples will be provided in the forum.

Submission

Your submission must include a patch file against the Git repository commit hash 206b7dc31750f539dfa45641c71dab5e0b5f5e61.  Details on getting access to the Git repo can be found in the forum.

Your deployment guide must cover how to properly apply the patch.

 


Final Submission Guidelines

Please see above

Review style

Final Review

Community Review Board

Approval

User Sign-Off

ID: 30056673